從stl的容器的函式和效能,猜測stl容器是使用什麼資料結構實現的
vector 陣列,動態增長陣列
list鍊錶
set 平衡二叉樹,一般是紅黑樹。
map 同set,但裡面的元素換成了pair
priority_queue 在隨機訪問的資料結構中使用堆排序
bitset:bit陣列,可用vector作為儲存,然後結合位運算實現。
stack,queue 比較簡單 filo,fifo的結構,一般用deque,因為會頻繁的插入,刪除
deque: double ended queue,比較複雜,資料結構是多個連續性的固定長度的陣列,可能的實現是乙個二維指標t**,維護著乙個t*指標的動態增長陣列,
每個t*指向的是固定長度的記憶體m,資料存在m內。
c++ 11還提供了一些其他的容器
array 定長陣列
forword_list 單鏈表
unordered_set, unordered_map:雜湊表
STL容器資料結構
資料結構 描述 實現標頭檔案 向量 vector 連續儲存的元素 列表 list 由節點組成的雙向鍊錶,每個結點包含著乙個元素 雙佇列 deque 連續儲存的指向不同元素的指標所組成的陣列 集合 set 由節點組成的紅黑樹,每個節點都包含著乙個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同...
STL各種容器底層資料結構
1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 4.stack 底層一般用23實現,封閉頭部即可,不用ve...
STL的資料結構
1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double ended que...