C Primer筆記7 STL之關聯容器

2021-09-08 17:44:31 字數 1553 閱讀 3194

關聯容器

與順序容器不同,關聯容器的元素是按keyword來訪問和儲存的。而順序容器中的元素是按他們在容器中的位置來順序儲存的。

關聯容器最常見的是map、set、multimap、multiset

map的元素以鍵-

值【key-value

】對的形式組織:鍵用作元素在map

中的索引,而值則表示所儲存和讀取的資料。

set僅包括乙個鍵。並有效的支援關於某個鍵是否存在的查詢。

pair型別

首先介紹下pair,pair定義在utility標頭檔案裡,乙個pair儲存兩個資料成員,類似容器,pair是乙個用來生成特點型別的模板。

當建立乙個pair時,我們必須提供兩個型別名。

paira; //儲存兩個string

pairb; //乙個儲存string,乙個儲存int

能夠使用make_pair來構建乙個pair

#include #include using namespace std;

int main()

map物件

定義map物件:

mapp;//定義乙個空map

mapm;//——建立乙個名為m的空物件,鍵和值型別分別為k和v

mapm(m2);//——m是m2的副本。注意k和v的值要同樣

mapm(b,e);//——建立map型別的物件m,儲存迭代器b和e標記的範圍內全部元素的副本。

關聯容器操作:

key_type——此容器型別的keyword型別

#include #include using namespace std;

int main()

return 0;

}

給map加入元素:

1、能夠使用insert成員實現;

2、或者先通過下標操作符獲取元素,然後給獲取的元素賦值。

使用下標訪問

map與使用下標訪問陣列或

vector

的行為截然不同

: 用下標訪問不存在的元素將導致在

map容器中加入乙個新元素

,它的鍵即為該下標值。

查詢與統計map中的元素:

1、使用m.count(k); 統計m中k出現的次數

2、使用m.find(k);查詢以k為索引的元素。假設存在返回指向該元素的迭代器,否則返回末端迭代器

統計單詞出現的次數:

#include #include using namespace std;

int main()

for(i = wordcnt.begin(); i!=wordcnt.end(); ++i)

return 0;

}

(7)STL演算法之交換 賦值

3 互換 stl的大部分容器都提供了成員函式swap 用於兩個不同容器物件之間的元素交換,同時,stl演算法也提供了演算法swap 個人認為盡量使用容器自己的swap 1 swap 宣告及定義 template void swap t a,t b template void swap t a,t b...

C Primer學習筆記(7)函式

1 函式呼叫做了兩件事情,用對應的實參初始化函式的形參,並將控制權轉交給被掉函式 主調函式的執行被掛起,被掉函式開始執行。2 函式體是乙個作用域。3 函式不能返回另乙個函式或者內建陣列型別,但是可以返回指向函式的指標或者指向陣列元素的指標。4 c 是一種靜態強型別語言,對於每一次的函式呼叫,編譯器都...

c primer閱讀筆記 15章 7

15.8.控制代碼類與繼承 1 c 中物件導向程式設計的乙個頗具諷刺意味的地方是,不能使用物件支援物件導向程式設計,相反,必須使用指標或引用。2 但是,使用指標或引用會加重類使用者的負擔。3 c 中乙個通用的技術是定義包裝 cover 類或控制代碼類。控制代碼類儲存和管理基類指標。指標所指物件的型別...