STL相關容器特徵總結

2021-08-08 04:02:21 字數 691 閱讀 2533

1.vector

vector對於資料的操作,與array比較相似,都是乙個連續線性空間。差別在於array申請完空間後就不能進行改變,而vector可以進行動態的控制。

2.stack(堆)

stack是乙個先進後出的資料結構。它只有乙個出口,所以它是沒有遍歷這個行為的。

3.queue(佇列)

queue是乙個先進先出的資料結構。它只能從最低端新增元素,最頂端移除元素。所以queue也

是沒有遍歷這個行為的。

4.list

比較於vector的線性空間,list複雜多了,list是乙個雙向鍊錶。在每次進行插入或者刪除乙個元素,就進行元素空間的分配或者釋放。對於任何位置的元素插入或者移除,list所使用的時間都在常數時間。

list有乙個比較重要的性質,插入操作與接合操作都不會造成原有的list迭代器失效。這在vector是不成立的。因為vector的插入操作可能造成記憶體的重置,導致原有的迭代器全部失效。甚至list元素的刪除操作,也只有「指向刪除元素」的那個迭代器失效。

5.map

map的特性是,所有的元素都會根據元素的鍵值進行排序。

map不允許兩個元素擁有相同的鍵值。

標準的 map

是以rb-tree(紅黑樹)為底層機制。map所開放的各種操作介面,rb-tree都提供了,所以幾乎所有的map操作行為,都是轉調rb-tree的操作行為而已。

STL容器相關

順序容器 順序容器有以下三種 可變長動態陣列 vector 雙端佇列 deque 雙向鍊錶 list。它們之所以被稱為順序容器,是因為元素在容器中的位置同元素的值無關,即容器不是排序的。將元素插入容器時,指定在什麼位置 尾部 頭部或中間某處 插入,元素就會位於什麼位置。關聯容器 關聯容器有以下四種 ...

STL容器特徵總結及原始碼剖析

1 內部資料結構 連續儲存,例如陣列。2 隨機訪問每個元素,所需要的時間為常量。3 在末尾增加或刪除元素所需時間與元素數目無關,在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化。4 可動態增加或減少元素,記憶體管理自動完成,但程式設計師可以使用reserve 成員函式來管理記憶體。5 迭代器失...

STL容器特徵總結和迭代器失效

內部資料結構 連續儲存,例如陣列。隨機訪問每個元素,所需要的時間為常量。在末尾增加或刪除元素所需時間與元素數目無關,在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化。可動態增加或減少元素,記憶體管理自動完成,但程式設計師可以使用reserve 成員函式來管理記憶體。迭代器失效 插入 vecto...