##(1) vector:將元素置於一個動態數組中,可以隨機存儲元素(也就是用索引直接存取)。 數組尾部添加或刪除元素非常迅速。但在中部或頭部就比較費時。 *代碼演示:* 取: at在下標越界時會拋出異常,我們能捕獲異常進行處理;而[]下標越界會讓程式直接終止; 構造函數: cbegin, cend ...
(1) vector:將元素置於一個動態數組中,可以隨機存儲元素(也就是用索引直接存取)。
數組尾部添加或刪除元素非常迅速。但在中部或頭部就比較費時。
*代碼演示:*
取:
at在下標越界時會拋出異常,我們能捕獲異常進行處理;而[]下標越界會讓程式直接終止;
構造函數:
cbegin, cend, crbegin, crend返回的是常量迭代器,不能通過迭代器修改vector元素的值。
插入(insert):值得註意的是,insert函數返回值是一個迭代器,指向新添加的第一個元素:
刪除(erase):
刪除一段內容時,前閉後開
front函數,返回第一個元素的引用
crbegin(),crend() 倒著輸出
(2) deque:“double end queue”的縮寫,也就是雙端隊列。
*deque的實現相比於vector有些複雜,但本質仍然是優化過的動態數組,只不過相比於單純的動態數組,在前面添加或刪除元素非常快了。*
*可以隨機存儲元素。*頭部和尾部添加或刪除元素都非常快(略慢與vector)。但在 中間插入元素比較費時(和vector差不多)。
*代碼演示:*
可以在前面添加和刪除、可以隨機存取元素([]、at):
(3) list:本質就是鏈表,所以自然具有了鏈表的屬性。
*不能隨機存取元素(也就是list無法用索引存取元素)*。在任何位置插入和刪除元素都比較迅速。(在任何位置插入刪除元素的時間相同,在元素頭部操作慢於deque,在元素尾部操作慢於deque和vector)
(4) string:
(5) map/multimap:使用“紅黑樹”實現,是一種高度平衡的二叉樹。
內部元素是成對的“key/value”,也就是“鍵值/實值”,內部元素依據其鍵值自動排序,map內部相同的鍵值只能出現一次,multimap則可以出現多次。
*代碼演示:*