1. 使用命名空间的using声明
- using namespace::name;
2. 头文件不应包含using声明,防止名字冲突。
3. 把s4 初始化为由连续n个字符c组成的串
- string s4 (n,‘c‘); //s4的内容是cccccccccc
4. 触发getline返回的那个换行符实际上被丢弃掉了,得到的string对象中并不包含换行符。
5. 因为某些历史原因,也为了与c兼容,所以c++中的字符串字面值并不是标准库类型string的对象。切记,字符串字面值与string是不同的类型。前者表示由常量构成的数组,后者表示string对象,可变长的序列。
6. cctype头文件和ctype.h头文件内容是一样的,一般来说,c++程序应该使用名为cname的头文件而不使用name.h的形式,标准库中的名字总能在命名空间std中找到。如果使用.h形式的头文件,程序员就不得不时刻记住那些是从c语言中继承来的,哪些又是c++所独有的。
7. 标准库类型vector表示对象的集合,其中所有对象的类型都相同。
8. vector
vector<int> v {1,2,3,4,5,6}; for (auto &i : v) // 使用auto自动获取i的类型,为vector<int> i *= i; for (auto i : v) cout << i <<" "; cout << endl;
9. vector的限制:不能在范围for循环中向vector对象添加元素。任意一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。
10. 解引用迭代器可以获得迭代器所指的对象,如果该对象类型恰好是类,就有可能进一步访问它的成员。
- (*it).empty()
101~117
11. 定义数组的时候必须指定数组的类型,不允许用auto关键字由初始值的列表推断类型。另外和vector一样,数组的元素应为对象,因此不存在引用的数组。
12. 不允许将一个数组赋值给另一个数组。
13. 使用数组的时候,编译器一般会把它转换为指针。使用数组作为一个auto的初始值时,推断得到的类型是指针而非数组。
14. ++i 和 i++的结果是一样的,都要等代码块执行完毕才能执行语句,但是性能是不同的。在大量数据的时候++i的性能要比i++的性能好原因:i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。而++i则是在直接+1,省去了对内存的操作的环节,相对而言能够提高性能。
原文:https://www.cnblogs.com/yanhualianye/p/14696689.html