读书笔记-算法竞赛入门经典(第二版)-第五章 C++与STL入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oytf10001/article/details/89520494

5.1 从C到C++

        5.1.1 C++版框架

  1.     C++能编译大多数C语言程序。虽然C语言中大多数头文件在C++中仍然可以使用,但推荐的方法是在C头文件之前加一个小写的c字母,然后去掉.h后缀。例如stdio.h->cstdio.h,string.h->cstring,math.h->cmath,ctype.h->cctype.

  2.     C++用输入输出流iostream来解决输入输出问题,避免了C中各种输入输出格式问题,但是最大的缺点是运行太慢。可以通过关闭和stdio的同步,即调用ios::sync_with_stdio(false)来加速。

  3.     C++通过使用命名空间的问题来缓解复杂程序的组织问题。最常见的是使用using namespace std。例如,有两个不同的人甲和乙写的同一个函数fun()要整合到一个工程中,可以使用std1:fun()和std2:fun()来避免冲突,这和Java中使用全限定名来避免冲突是类似的。

  4.     C++中声明数组大小时,推荐用const int maxn = 100;这种形式来替代#define maxn 100这种形式。

  5.     C++的数据类型和C语言很接近,最显著的区别是多了一个bool来表示布尔值,然后用true和false分别表示真和假。

       5.1.2 引用

            C++提供了引用,虽然在功能上比指针弱,但是减少了出错的可能性,提高了代码的可读性。C++中的引用就是变量的“别名”,它可以在一定程度上代替C中的指针,可以在函数内直接修改实参。

       5.1.3 字符串

            C++提供了一个新的string类型,用来替代C语言中字符数组。C++在string头文件里定义了string类型,直接支持流式读写。string有很多方便的函数和运算符,但速度有些慢。

       5.1.4 再谈结构体

            C++中不再需要用typedef的方式定义一个struct,而且在struct里除了可以用变量(称为成员变量)之外还可以有函数(称为成员函数)。注意在工程上和算法竞赛中使用struct和class的区别,算法竞赛中一般用struct。

       5.1.5 模板

            虽然模板在工程中的应用范围很广,而且功能十分强大,但在算法竞赛中用的比较少。

       番外篇 运算符重载

猜你喜欢

转载自blog.csdn.net/oytf10001/article/details/89520494