multimap提供了可以一種可以有重複鍵值的stl map型別。其插入方式和map相似,但是由於可以擁有重複鍵值所以在查詢方面有些不同。
查詢
1. 直接找到每種鍵值的所有元素的第乙個元素的游標。
通過函式:lower_bound( const keytype& x ), upper_bound( const keytype& x ) 可以找到比指定鍵值x的小的鍵值的第乙個元素和比指定鍵值x大的鍵值的第乙個元素。返回值為該元素的游標。
細節:當到達鍵值x已經是最大時,upper_bound返回的是這個multimap的end游標。同理,當鍵值x已經是最小了,lower_bound返回的是這個multimap的begin游標。
2. 指定某個鍵值,進行遍歷
可以使用上面的lower_bound和upper_bound函式進行遊歷,也可以使用函式equal_range。其返回的是乙個游標對。游標對pair::first是由函式lower_bound得到的x的前乙個值,游標對pair::second的值是由函式upper_bound得到的x的後乙個值。
樣例如下:
multimapa;
a.insert(pair(1,11));
a.insert(pair(1,12));
a.insert(pair(1,13));
a.insert(pair(2,21));
a.insert(pair(2,22));
a.insert(pair(3,31));
a.insert(pair(3,32));
multimap<
int,
int>
::iterator p_map;
pair<
multimap
<
int,
int>
::iterator, multimap
<
int,
int>
::iterator
>
ret;
for(p_map
=a.begin() ; p_map
!=a.end();
)
結果:1 => 11 12 13
2 => 21 22
3 => 31 32
C 學習筆記( )
一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...
C 學習筆記
1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...
c 學習筆記
屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...