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的迭代器在記...