關聯容器
與順序容器不同,關聯容器的元素是按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 類或控制代碼類。控制代碼類儲存和管理基類指標。指標所指物件的型別...