C++ STL 的實現:
1.vector
底層數據結構為數組 ,支持快速隨機訪問
2.list
底層數據結構為雙向鏈表,支持快速增刪
3.deque
底層數據結構為一個中央控制器和多個緩沖區,詳細見STL源碼剖析P146,支持首尾(中間不能)快速增刪,也支持隨機訪問
deque是一個雙端隊列(double-ended queue),也是在堆中保存內容的.它的保存形式如下:[堆1] --> [堆2] --> [堆3] --> ...每個堆保存好幾個元素,然后堆和堆之間有指針指向,看起來像是list和vector的結合品.
4.stack
底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時
5.queue
底層一般用list或deque實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時
(stack和queue其實是適配器,而不叫容器,因為是對容器的再封裝)
6.priority_queue
的底層數據結構一般為vector為底層容器,堆heap為處理規則來管理底層容器實現
7.set
底層數據結構為紅黑樹,有序,不重復
8.multiset
底層數據結構為紅黑樹,有序,可重復
9.map
底層數據結構為紅黑樹,有序,不重復
10.multimap
底層數據結構為紅黑樹,有序,可重復
11.hash_set
底層數據結構為hash表,無序,不重復
12.hash_multiset 底層數據結構為hash表,無序,可重復
13.hash_map 底層數據結構為hash表,無序,不重復
14.hash_multimap 底層數據結構為hash表,無序,可重復