首页 > 代码库 > C++ primer 笔记二

C++ primer 笔记二

第3章 标准库类型

1.任何存储string的size操作结果的变量类型必须为string::size_type类型。

2.同理存储vector的size值应使用类似vector<string>::size_type的类型变量

3.使用for(vector<int>::size_type ix=0; ix != ivec.size(); ++ix)的风格 a.使用!=的效率更高 b.在循环过程中可能ivec的元素个数会变化,所以每次比较ivec.size()是一种更合理的做法 以。 c.C++有很多小函数都是内联函数,所以多次调用ivec.size()产生的效率代价是很小的

4.多认识了一个const迭代器:vector<int>::const_iterator,与vector<int>::iterator极像,只是不能对得到的指针指向的对象进行修改。

5.两个迭代器相减(iter1-iter2)得到两者的距离

6.操作符::用于在其左操作数的作用域内找到其右操作数的名字。

7.size_t在cstddef头文件中定义的机器相关的无符号整型,该类型足以保存最大数组的长度。


第4章 数组和指针

8.未初始化的指针可能不为0,所以要尽量在声明的地方初始化,或在将其初始化为NULL即0,方便使用前判断是否已经初始化。

9.int &ri=ival, &ri2 = ival2;   ri = r2; 结果是什么?将ival2的值赋给ival,引用未变化。

10.在处理C风格字符串时(即char数组)永远要记得字符串结束符为null(即‘\0‘),否则类似strlen()的结果不是确定的而且必将是错误的结果。包括strncpy等,但strlen的结果不包含结束符

11.使用C++标准库类型string则不会存在C风格字符串的问题,同时string的效率比C风格的也高。

12.c_str()返回的数组并不一直保持有效性。当string变量的内存分配不变化时,c_str()是一直有效的,但是如果在后面的操作中string变量的长度发生变化或其他一些情况发生,因内存的重新分配,则已经保存的string.c_str()指针就可能变化,必须重新调用c_str()返回新的地址.

C++ primer 笔记二