map 容器是關聯式容器的一種,儲存的都是pair 類模板建立的鍵值對;鍵值對,其中第乙個元素作為鍵(key),第二個元素作為值(value)。
在使用 map 容器儲存多個鍵值對時,該容器會自動根據各鍵值對的鍵的大小,按照既定的規則進行排序。
預設情況下,map 容器選用std::less排序規則(其中 t 表示鍵的資料型別)是做公升序排序
使用 map 容器儲存的各個鍵值對,鍵的值既不能重複也不能被修改。
map的迭代器:c++ stl 標準庫為 map 容器配備的是雙向迭代器(bidirectional iterator)。這意味著,map 容器迭代器只能進行 ++p、p++、–p、p–、*p 操作,並且迭代器之間只能使用 == 或者 != 運算子進行比較。
較常用的迭代器有:begin(), end(), find(key), lower_bound(key), upper_bound(key)等。
注意:find() 能幫我們查詢指定 key 值的鍵值對,如果成功找到,則返回乙個指向該鍵值對的雙向迭代器;反之,其功能和 end() 方法相同。
關於map的查詢方法:
1、過載運算子【】:
如果查詢的鍵值對存在,借助過載的 [ ] 運算子才能成功獲取該鍵對應的值;
如果不存在,則為向該 map 容器中增添乙個鍵值對,值的資料型別,如果是基本資料型別(int/double/longlong),則值為 0;如果是 string 型別,其值為 「」,即空字串(即使用該型別的預設值作為鍵值對的值)
2、at()函式
at() 成員方法也需要根據指定的鍵,才能從容器中找到該鍵對應的值
不同之處在於,如果在當前容器中查詢失敗,該方法不會向容器中新增新的鍵值對,而是直接丟擲 out_of_range 異常。
3、如果以上方法都不適用,我們還可以遍歷整個 map 容器,找到包含指定鍵的鍵值對,進而獲取該鍵對應的值,例如:
for
(auto iter = mymap.
begin()
; iter != mymap.
end();
++iter)
}return
0;
關於map的插入資料方法:
1、過載運算子【】:如果鍵值在已有的map裡不存在,則為向該 map 容器中增添乙個鍵值對,值的資料型別,如果是基本資料型別(int/double/longlong),則值為 0;如果是 string 型別,其值為 「」,即空字串(即使用該型別的預設值作為鍵值對的值)
2、用insect()函式:返回的是乙個pair,其中 pair.first 表示乙個迭代器,pair.second 為乙個 bool 型別變數(不過插入的時候可以不管返回值)
STL 中 map 的用法
說明 如果你具備一定的 c template知識,即使你沒有接觸過stl,這個文章你也應該可能較輕易的看懂。本人水平有限,不當之處,望大家輔正。一 map概述 map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料處...
STL 之 map的用法
下面舉例說明什麼是一對一的資料對映。比如乙個班級中,每個學生的學號跟他的姓名就存在著一一對映的關係,這個模型用map可能輕易描述,很明顯學號用int描述,姓名用字串描述 本篇文章中不用char 來描述字串,而是採用stl中string來描述 下面給出map描述 mapmapstudent 1.map...
STL容器 關於map的用法的記錄 持續更新
stlmap的格式這這樣的。mapa 其中key是鍵的意思,value是值。俗稱鍵值對。stl中map有兩種方式,第一種就是map,這種方式的鍵不可以是相同的。第二種方法是multimap,這種map是允許鍵相同的。上 檢視實際效果 include include include using nam...