第9章 順序容器
1. 順序容器如果有一個只需要容器大小參數的默認構造函數,該函數使用的是元素的默認構造函數來構造每個元素對象,如果該容器的元素沒有默認構造函數,那麼就不能使用這個容器的該構造函數P294:
2. 容器進行拷貝初始化時,兩個容器的元素必須同類型.
但是如果列表初始化,或迭代器範圍初始化容器,那麼只要求列表中元素或迭代器所指元素可以轉化爲容器的元素即可.
3. 容器類型可以直接通過=號賦值(包括array容器數組類型):
注意:assign僅適用於順序容器(但不適用於array)
4. 兩個容器進行==或!=比較,用的是元素的==運算符.它們進行>或<比較,用的是元素的<運算符,所以如果元素沒有定義這兩種運算符或者這兩種運算符不是public的,那麼將不能比較:
5. 順序容器(除array)都支持insert(P307),下面是insert的用法:
使用insert的返回值: insert()返回它插入的第一個元素的迭代器.
6. 使用emplace操作:
7. 除forward_list外,其他順序容器都支持front()和back()操作,不過P311書本上說它們返回引用,但是我測試結果卻並非如此,問題在哪裏?
再看下面另一種方式:
說明front()和back()確實返回引用,但是auto沒有正確的解析類型.
at操作也返回引用哦.
8. vector刪除元素P311-312
9. resize()操作支持除array外的所有順序容器,它既可以增加元素也可以減少容器的元素,如果刪除元素,可能導致被刪除元素的迭代器,指針,引用失效:
10. string的添加字符,刪除字符操作: P322
11. 使用resize()增大容器並不會改變容器裏原有元素的值: