1. STL有6種序列容器類型
(1)vector
它提供對元素的隨即訪問,在尾部添加和刪除元素的時間是固定的,在頭部或中部插入和刪除元素的複雜度爲線性時間。
(2)deque
在文件中聲明。
是雙端隊列,支持隨即訪問。從deque的開始與末尾位置插入和刪除元素的時間是固定的。
儘管vector和deque都提供對元素的隨機訪問和在序列中部執行線性時間的插入和刪除操做,但vector容器執行這些操做時速度更快一些。
(3)list
是雙向鏈表,插入刪除元素時間固定。不支持隨機訪問。與vector不一樣是,當向容器中插入或刪除元素後,鏈表迭代器指向元素將不變。
解釋一下:若是一個vector有5個元素,中間插入一個,那麼第五個元素包含的值將是之前第四個元素的值,所以,迭代器指向的位置不變,可是數據不一樣。然而,在鏈表中插入新元素並不會移動已有的元素,而只是修改連接信息。 指向某個元素的迭代器仍然指向該元素,也就是值相同,連接的位置不一樣了。
(4)queue
在頭文件中聲明。 queue是一個適配器類,底層類默認爲deque。 它不容許隨機訪問隊列元素,甚至不容許遍歷隊列。能夠將元素添加到隊尾,查看隊尾和隊首的元素的值,檢查元素數目和測試隊列是否爲空。
(5)priority_queue
與queue的不一樣是,最大的元素老是在隊首,也是一個適配器類,默認的底層類是vector。
能夠修改用於肯定哪一個元素放在隊首的比較方式,方法是提供一個可選的構造函數參數。
(6)stack
也是一個適配器類,默認的底層實現爲vector。 不容許隨機訪問堆棧元素,甚至不容許遍歷堆棧。能夠壓入到棧頂,從棧頂彈出元素,查看棧頂元素的值,檢查元素數目和測試堆棧是否爲空。
2. STL有4種聯合容器:set,multiset, map, multimap;
聯合容器將值與關鍵字關聯在一塊兒,使用關鍵字來查找值。
關聯容器的長處在於,它提供了對元素的快速訪問。 與序列類似,聯合容器也容許插入新元素,不過不能指定元素的插入位置。緣由是聯合容器一般包含用於肯定數據存放位置的算法,以便可以很快檢索信息。
(1)set,multiset
前兩種是在set頭文件中(之前分別爲set.h和multiset.h);
值的類型與關鍵字相同。 set刪除相同的元素,multiset不會。
(2)map,multimap
後兩種是在map頭文件中(之前分別爲map.h和multimap.h)。
值的類型與關鍵字不一樣。 map關鍵字惟一,multimap關鍵字不惟一。算法