## 第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語句處理多維數組,除了最內層的循環外,其他所有循環的控制變量都應該是引用類型。