C与C++的区别

目录

从C语言到C++

代码改变

即将开始---STL


从C语言到C++

1980年,Bjarne Stroustrup博士着手创建一种新的语言,能够具有面向对象的程序设计特色。在当时,面向对象编程是一个新颖的概念,Stroustrup博士并不是从头开始设计新语言,而是使用C语言进行修改,而这就是C++语言。

C++是C的超集,也就是说C++是可以兼容C语言的,C++在C语言的基础上增加了许多的特性和概念,他通关关键字的方式进行实现,不过本文不重点说明C++和C语言的区别,本文只是从数据结构的角度去观测两语言之间的问题,并且说明C++的改进,从本文开始,将会在C语言的基础上开始用到C++的特性和概念去实现数据结构,这将方便我们的程序设计。

代码改变

介绍几个很明显的转变我们以后会很常用,这些可以在C语言网的C++教程中看到,如果你已经学过C++,建议你可以直接跳过本段内容,如果你对于C++还一知半解的,建议你在阅读本文的同时去翻阅C++的学习资料,两者的学习并不冲突,相反他们相辅相成。

1.头文件引用

C语言的引用头文件的方式是include名字.h的方式进行引用,而C++去掉了.h(虽然在绝大多数编译器上任然使用.h的方法也不会报错)而是改成直接引用名字即可,这里需要注意的是C++使用C语言标准时,需要在库前面添加一个c来表明这个库是来自于C语言的。

objectivec 复制代码
//C语言的方法:带.h的方式进行include
#include<stdio.h>
#include<math.h>
  
//C++的方法,直接引用即可
#include<cstdio>
#include<cmath>

2.输入与输出

C++的输入输出与C语言指定类型的不同,C++采用"流"的思路去进行输入输出设计,这样的做法可以大大简化我们的设计,但是这样的做法确是更慢,本章稍后会介绍输入输出的优化,将会重讲本内容。

objectivec 复制代码
int n; //定义n为整形
//C语言的输入输出(需要指定类型,如下指定为整形)
scanf("%d",&n);
printf("%d",n);
//C++语言的输入输出(不需要指定类型,会根据n进行自主的判定)
cin>>n;
cout<<n;

即将开始---STL

STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。从根本上说,STL是一些"容器"与"算法"的集合,所谓的这些"容器"无非就是已经实现好了数据结构,能够让程序设计者更为方便的进行调用,"算法"则顾名思义就是已预先实现好了的算法集合。

STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用安装额外的库文件。STL的版本很多,有很多公司或者工作室自定义STL形成各种各样的自定义标准。。

在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

使用STL可以大大辅助简化我们的算法与数据结构的设计,但是我们必须要记住,在我们使用之前,我们必须要了解他的原理,掌握它的技巧,否则就是乱用,切记。

相关推荐
学Linux的语莫15 分钟前
python中类的常见写法
开发语言·python·状态模式
需要82617 分钟前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
dyxal31 分钟前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
譕痕35 分钟前
Rabbit 实例
java·开发语言·java-rabbitmq
综合简报1 小时前
黑五海外发稿投给谁?三类海外媒体发稿渠道的分工
开发语言·php·媒体
·present·1 小时前
CSAPP(lecture 3)
c++
大风起兮云飞扬丶1 小时前
Java——线程池
java·开发语言
本地化文档1 小时前
llvm-libc-docs-l10n
c语言·github·gitcode·sphinx·llvm·crowdin
别动我齐刘海1 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
我命由我123452 小时前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee