STL各容器底層資料結構總結

2021-09-23 18:54:24 字數 603 閱讀 7748

看了《stl原始碼剖析》,對於裡面的容器,下面進行了簡單的總結。

底層使用陣列儲存。push_back時若已經滿了,則會2*n擴充套件空間,若實際元素數量低於分配空間的1/4,則會將空間**為原來的一半。《stl原始碼剖析》裡面沒有講到空間的**,是之前查詢資料時看到。調整空間時,是先申請新的空間,然後將舊空間的內容拷貝過去,然後再釋放舊的空間。

只適用於快速查詢及只在末尾增刪,而不適用於動態增刪(可能涉及到元素的移動)。對元素進行增刪時,可能導致舊的迭代器失效。

底層是雙向鍊錶,支援頭尾增刪,並且是乙個環。

不適用於查詢頻繁的情況,但適用於動態增刪。

底層是乙個分段的線性表。籠統的說就是使用了乙個二維指標,第一維是每段的資訊,而第二維就是乙個陣列了,實際儲存的元素就是在這裡。

頭尾都支援插入,但是維護麻煩很多。

是乙個容器介面卡,預設底層使用deque,適配之後只能從頭插入和刪除。

是乙個容器介面卡,預設底層使用deque,適配之後只能從尾插入,從頭刪除。

使用單向鍊錶實現的列表。

底層使用紅黑樹實現,multimap是key值可重複的map。

底層使用hashtable實現,其中hashtable是採用開鏈法來防止雜湊衝突的。

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

STL底層資料結構實現

c stl 的實現 1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double...