当用+连接string对象和字符串字面值的时候,必须确保有一个操作数是string对象。
使用范围for循环实际上是在使用迭代器循环,所以不能再循环里改变容易容量或执行让迭代器失效的操作。
数组的名字在很多情况下会转换成指针,auto会推导出指针,但是decltype还是能推导出数组。当用数值初始化数组引用的时候也能推导出数组。把数组名赋值给指针,参与指针运算,数组名都会转换成指向第一个数组元素的指针,这种情况下int a[10]的a体现出了int* const a的性质,数组不能直接通过赋值进行拷贝操作。数组的长度也是数据类型的一部分,所以不同长度但是元素类型相同的数组并不能进行引用操作。
指针也是迭代器,支持所有迭代器操作,而且下标的索引值可以是负数。如a[-1]等价于*(a-1)
标准库容器一般都搭配了begin()和end(),cbegin()和cend(),后者得到的是const迭代器,不能修改对象的值。可以使用begin(a)和end(a)获取数组a的迭代器,这也是数组能够支持范围for的原因。
几个处理c风格字符串的函数,strlen(p),strcmp,strcat,strcpy
string通过c_str()得到对应的c风格字符串
标准库容器一般都可以使用一对迭代器初始化,vector可以用数组初始化。
多维数组本质上是数组的数组。int a[10]和int (a)[10]是不一样的,后者是指向长度为10的数组的指针。