筆記 各種容器的特點

2022-09-12 04:54:10 字數 1054 閱讀 6281

stl中基本容器有:string、vector、list、deque、set、map

set和map是無序的儲存元素(關聯容器)。只能通過它提供的介面訪問元素。

set:集合。用來判斷某個元素是否在乙個組裡。

map:地圖。把乙個值對映成另乙個值。查詢、遍歷效果不錯。

因為底層多用平衡二叉樹實現,所以插入時效率有一定影響。

string、vector、list、deque、set是有序容器(順序容器)。

string:字串。

訪問元素效率高:因為記憶體連續存放。      

插入效率:尾端操作快;中間操作時會進行記憶體複製,慢。

刪除元素:並不會立即釋放記憶體,為了下次使用更加高效。

記憶體分配:在堆中分配,有保留記憶體,所以大量使用時會有記憶體浪費。

支援隨機訪問。

vector:向量/動態陣列。

插入刪除:尾端操作快;中間操作需要移動記憶體,如果牽扯結構體或類,還要構造和析構,效能不高。

記憶體分配:在堆中分配,有保留記憶體。

支援隨機訪問

list:雙向鍊錶。主要通過迭代器訪問。

訪問元素效率低:因為是通過遍歷指標來進行訪問,記憶體空間可以不連續。

但是雙向鍊錶,首尾訪問還是比較快的。

插入刪除:效率高!這是鍊錶的乙個特點。刪除時不存在記憶體拷貝問題,也沒有構造析構問題。

記憶體分配:在堆中分配。沒有預留記憶體,增加時分配、刪除時釋放。

不支援支援隨機訪問!

備註:如果新增大記憶體元素用list比較好!

deque:雙端佇列。

支援隨機訪問

。 (像是vector與list的結合)

set:集合。

set和multiset是乙個按使用者指定規則將資料進行排序的集合庫。

set不允許有相同的資料;multiset允許有重複資料。

map:字典。

map或multimap是乙個按使用者指定規則將資料進行排序的集合庫,索引型別由使用者指定。

map不允許有相同資料;multimap允許有重複資料。

總結各種容器特點

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

C 各種容器特點總結

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

C 各種容器特點總結 容器的選擇問題

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