1. 程式人生 > >C++底層資料結構的實現原理

C++底層資料結構的實現原理

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