STL 容器記憶體儲存結構

2022-03-04 08:43:20 字數 1004 閱讀 5927

vector的使用參見:

vector的記憶體儲存空間是連續的,會先申請一篇特定大小的空間,當空間用完之後會進行擴容,擴容之後,需要將原先記憶體空間中的內容拷貝到新的記憶體空間中,最後把原來的空間釋放還給記憶體,示意圖如下所示。

list的使用參見:

list在每次插入乙個元素或刪除乙個元素的時候,就需要申請或釋放乙個元素空間,list的儲存結構如下所示。

deque使用參見:

deque是雙向開口的連續線性空間,是由動態的分段連續空間組合而成,採用指標陣列(map)對空間進行管理。與vector的最大差異是,1. 允許在常數時間內,在開頭執行元素的插入或刪除操作;2. 沒有容量(capacity)的概念;3. 不需要像vector那樣因為空間不足,重新分配更大的空間,並進行copy,釋放空間的操作,直接申請適當的連續空間即可。

內部儲存結構預設使用deque

stack的使用參見:

queue的使用參見:

heap使用參見:內部使用vector進行儲存。

用vector來表示乙個完全二叉樹,示意圖如下:

內部使用heap進行儲存。

priority_queue的使用參見:

紅黑樹的介紹可以參見:

史上最清晰的紅黑樹講解(上)

史上最清晰的紅黑樹講解(下)

STL容器資料結構

資料結構 描述 實現標頭檔案 向量 vector 連續儲存的元素 列表 list 由節點組成的雙向鍊錶,每個結點包含著乙個元素 雙佇列 deque 連續儲存的指向不同元素的指標所組成的陣列 集合 set 由節點組成的紅黑樹,每個節點都包含著乙個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同...

STL容器vector的記憶體問題

在stl的容器中,vector可以說是最容易理解和使用的容器了,以前使用陣列的時候,如果不確定有多少資料要儲存,就會預先分配乙個大的陣列,如果實際沒有用到那麼多,又會浪費很多的記憶體資源,如果不分配大的陣列又擔心不夠用,有了vector之後,這些問題再也不用擔心了,vector會動態的增長空間,當v...

STL容器vector的記憶體問題

在stl的容器中,vector可以說是最容易理解和使用的容器了,以前使用陣列的時候,如果不確定有多少資料要儲存,就會預先分配乙個大的陣列,如果實際沒有用到那麼多,又會浪費很多的記憶體資源,如果不分配大的陣列又擔心不夠用,有了vector之後,這些問題再也不用擔心了,vector會動態的增長空間,當v...