目录
一、C和C++的区别
1、C语言可以在C++编译器上运行(C++包涵C)
2、C++与C相比有函数库(STL、BOOST等等)
3、C++是面向对象的编程语言(有class类及特性)
二、由C快速过度到C++
1、C与C++的框架不同点(不同处有红色标记)
由C对比C++
①C版框架:
#include<stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b)
printf("%d ",a+b);
return 0;
}
②C++版框架1(改动一些)
#include<cstdio>①
int main(){
int a,b;
scanf("%d%d",&a,&b)
printf("%d ",a+b);
return 0;
}
③C++版框架1(最后改动一些)
#include<iostream>②
#include<algorithm>③
using namespace std;④
int main(){
int a,b;
cin>>a>>b; ⑤
cout<<a+b<<" ";⑥
return 0;
}
①在C++中推荐的将stdio.h写为cstdio(即去末尾的.h然后在开头加c),string、cmath也类似。
②在C++中更推荐使用iostream(提供输入输出流)代替原本的cstdio,使用iostream头文件后就可以使用std::cin,再加上using namespace std声明命名空间std后(原理在后面的4、中) 就可以用cin代替复杂的std::cin,cout也同理。使用cin和cout的优点有:“不需要记忆%d%s等占位符,同时也避开了long long类型的输入输出展位符不统一的问题” ,坏处有:“最大缺点就是运行太慢,以至于很多竞赛题目会注明本题输入量很大,请不要使用C++的流输入。”,不过流也可以加速,方法是关闭和stdio的同步,即调用ios::sync_with_stdio(face)
③在C++中algorithm提供了常用的算法如min函数(下列代码位用到但此头文件很常用)
④C++中有一个名称空间(namespace)的概念,用来缓解复杂程序的组织问题。如上述2、中所述,如果不添加using namepace std 则会使用输入输出流的语句变复杂。对于如何缓解复杂程序的组织问题,我举个例子,小A和小B同学都写了一个函数,虽然作用不同但是巧的是函数名相同都为good_function(),如果要把他们两人的程序合在一起用,就会出现问题:函数名不能重复。即使C++支持函数重载,但是如果这两个函数的参数类型也相同,则是不能重载的。一个解决方案是分别把函数写在各自的名称空间里,然后就用xA:good_function()和xB:good_function()这样的方式进行调用了。基于这样的考虑,头文件iostream和algorithm里定义的内容放在std名称空间里。如果代码和该名称空间里的内容不重名,就可以用using namespace std方法把std里的名字导入默认空间。(虽然工程上不推荐这样做,但是算法竞赛的程序通常很小,所以用此方法也无大碍。)这样就可以用cin代替复杂的std::cin,cout代替复杂的std::cout.
⑤cin>>a>>b>>代替scanf("%d%d",&a,&b),cin全称标准输入流,从标准输入中读取a,b。
⑥cout<<a+b<<" "代替printf("%d ",a+b)q,cout全称标准输出流,输出a+b并换行。
2、C与C++不同的总结
①头文件常用{ #include<iostream>(标准输入输出流)
加#include<algorithm>(提供常用算法)
加using namespace std }(声明使用命名空间std)
②通过iostream和namespace,使用更为方便的cin>>(变量名),cout>>(变量名)
3、初步掌握
只需要掌握C与C++的不同点后,就能算初步轻松使用C++,因为其他的C++语法如if、for等和C完全相同。
三、C++的函数库(使你变强)
不同于C,C++拥有丰富的函数库,其中最方便的、最重要的是STL函数库,其次是BOOST。STL库包含非常方便的容器vector、set、map等等,此外C++还有各种函数使你强大,当然你需要付出很多时间去学习。