stl 容器的資料結構

2021-06-17 21:04:47 字數 508 閱讀 2654

從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...