C 容器及選用

2022-07-29 12:24:11 字數 700 閱讀 9729

【一】 stl容器

(1) list (鍊錶 ), 記憶體不連續,任何位置高校插入刪除

(2) vector (陣列),記憶體連續,只有在尾部插入時,不用移動元素,隨機訪問

(3) deque(雙端佇列)兩端插入刪除效率高,但是中間的操作代價較大,隨機訪問

【注】若要經常在中間插入刪除 ,list ;

若經常隨機訪問, vector和deque ,支援下表操作。

關聯容器

(4) map鍵型別嚴格弱排序

建構函式 : 

mapm;

mapm(m2);

mapm(m2.beg, m2.end);

注】map[key] = value; 若下標所示的鍵不存在,則自動建立,精簡程式!

insert(pair)

find(key)    返回迭代器

count(key)  存在返回1,否則為0

(5)  set

不重複元素的集合,使用平衡樹實現,查詢效率 log(n)

操作類似於map

另外,multimap , multiset.

【二】 boost

stl容器中沒有雜湊容器!

unordered_set 用雜湊函式實現,複雜度為常數,具體與雜湊函式有關

unordered_map 

C 容器類的使用及舉例

vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。1.定義乙個已知長度的 vector vector...

C 各容器的語法及特點

int main array不可變長,array在記憶體中是連續的 陣列arraymyarray 定義了乙個int型,陣列元素數為3的陣列 auto mbegin myarray.begin 從陣列的首位址開始自動 array iterator mend myarray.end 迭代 for mbe...

C 中的容器及相關操作

關聯容器將值與鍵關聯在一起,並使用鍵來查詢值。stl提供了4種關聯容器 set multiset map multimap。set中,可反轉,可排序,鍵與值型別相同,鍵是唯一的,意味著集合中不會有多個相同的鍵。multiset中,可能有多個值的鍵相同。map中,鍵與值型別不同,鍵是唯一的,每個鍵只對...