STL 各種容器

2021-06-21 09:25:54 字數 723 閱讀 6564

c++ stl 的實現:

1.vector  底層資料結構為陣列 ,支援快速隨機訪問

2.list    底層資料結構為雙向鍊錶,支援快速增刪

3.deque   底層資料結構為乙個**控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾(中間不能)快速增刪,也支援隨機訪問

4.stack   底層一般用23實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時

5.queue   底層一般用23實現,封閉頭部即可,不用vector的原因應該是容量大小有限制,擴容耗時

6.45是介面卡,而不叫容器,因為是對容器的再封裝

7.priority_queue 的底層資料結構一般為vector為底層容器,堆heap為處理規則來管理底層容器實現

8.set       底層資料結構為紅黑樹,有序,不重複

9.multiset  底層資料結構為紅黑樹,有序,可重複 

10.map      底層資料結構為紅黑樹,有序,不重複

11.multimap 底層資料結構為紅黑樹,有序,可重複

12.hash_set 底層資料結構為hash表,無序,不重複

13.hash_multiset 底層資料結構為hash表,無序,可重複 

14.hash_map      底層資料結構為hash表,無序,不重複

15.hash_multimap 底層資料結構為hash表,無序,可重複 

STL各種容器的區別

容器名名稱 資料結構 效能備註 string 通用字串庫 連續存放的記憶體塊 有保留記憶體 堆中分配記憶體 高效率的隨機訪問 o 1 的訪問時間 在最後增加元素時,一般不需要分配記憶體空間,速度快 在中間或開始操作元素時要進行記憶體拷貝效率低 支援操作 vector 通用向量 陣列 庫 變長一維陣列...

STL中各種容器效率

2.deque 動態陣列 deque支援隨機訪問。在deque的首端和末端插入和刪除元素比較快,在中部插入和刪除則比較慢。deque的記憶體重分配效能比vector好。3.list 雙向鍊錶 list不支援隨機訪問。list在任何位置安插和刪除元素速度都比較快 雙向鍊錶 list的安插和刪除操作不會...

STL各種容器如何正確的erase

分類 c 基礎 2014 05 14 10 52 41人閱讀收藏 舉報stl erase vector刪除 c stl中 結點類容器 如 list,hash map 遍歷時進行刪除 時,需要這樣做 for list iterator iter m list.begin iter m list.end...