C++ primer学习记录(我的猜测未测试版本)

学习版本:第五版。linux

本博文主要记录我的曾经并不知晓知识细节。c++

由于linux下的编译环境还未进行学习。因此实际代码测试将在从此完成。程序员

红色:需确认。算法

蓝色:重点。数组

 

1)const对象设定为仅在文件内有效。我的认为:.h .cpp属于同文件的概念(未测试)。函数

2)constexpr:常量表达式标示符。使用此做为前/后缀时,表示此变量/函数为常量表达式。但,具体用途?以及为什么须要这样的标示符?学习

3)但凡使用迭代器的循环,都不要向迭代器增长元素。由于增长元素可能致使容器从新分配内存,致使后续迭代器操做 可能 不按照逻辑执行。测试

4)迭代器循环中,可使用删除(earse)操做。但须要注意迭代器执行状况。在可能状况下,尽可能不对迭代器循环进行修改。优化

5)auto未c++ 11新添加内容。须要肯定是否好用和代码可读性等等问题。spa

6)数组的初始化必须是常量表达式。例子:unsinged cnt = 42; string bad[cnt];  //错误,cnt不是常量表达式。

7)不容许对数组进行赋值或者copy。(应该是指对数组指针,而不是数组内容。)

8)在递增前的数据不须要时,尽可能使用前置版本( ++i )。由于后置版本须要储存原数据(编译器一般不优化)。也适用于递减版本。

9)位运算不要在有符号数据中使用。容易产生结果不肯定问题。

10)sizeof运算符三种状况:p是指针,array_p是数组。

  1,sizeof( p );   //指针大小。

  2,sizeof( *p );  //指针指向的对象大小。

  3,sizeof( array_p );    //数组所占用的内存大小。

  注意:数组是一个比较例外的状况。

11)const_cast能够在 const 和 非const之间进行转换。

12)在while条件部分生成的迭代器每次循环也会被注销(开始时也会建立)。

13)泛型算法不依赖容器(不会执行容器操做),但依赖迭代器操做。

14)使用泛型算法前,程序员须要保证 容器能够接受算法要求。例:容器大小(算法fill)。

15)须要进一步了解常函数特性。

相关文章
相关标签/搜索