STL底層數據結構實現

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表,無序,可重複 



相關文章
相關標籤/搜索