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()返回新的地址.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。