ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 第3章 字符串、向量和数组 ### 3.1 命名空间的using声明 头文件不应包含using声明。 ### 3.2.2 string对象上的操作 在执行读取操作时,string对象会自动忽略开头的空白(不可见字符)并从第一个可见字符开始读起,直到遇见下一处空白为止。 ### 3.3.2 向vector对象中添加元素 范围for语句体内不应改变其所遍历序列的大小。 ### 3.3.3 其他vector操作 vector对象(以及string对象)的下标运算符可用于访问已存在的元素,而不能用于添加元素。 ### 3.4.1 使用迭代器 为了专门得到const_iterator类型的返回值,C++11新标准引入了两个新函数,分别是**cbegin**和**cend**。 --- 任何一种可能改变vector对象容量的操作,都会使该vector对象的迭代器失效。 ### 3.4.2 迭代器运算 ```cpp /* 练习3.26 —— 迭代器不支持两个对象相加的运算 */ mid = beg + (end - beg) / 2; //正确 mid = (beg + end) / 2; //错误 ``` ### 3.5 数组 - 定义数组的时候必须指定数组的类型,不允许用**auto**关键字由初始值的列表推断类型。 - 不能将数组的内容拷贝给其他数组作为其初始值,也不能用数组为其他数组赋值。 ### 3.5.2 ```cpp unsigned scores[num] = {}; //num个元素,全部初始化为0 ``` ### 3.5.3 当数组作为一个**auto**变量的初始值时,推断得到的类型是指针而非数组。使用**delctype**则不会发生这种转换。 ### 3.5.5 允许使用数组初始化vector对象,只需指明要拷贝区域的首元素地址和尾后地址就可以了。 ### 3.6 多维数组 要使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。