使用前新增map標頭檔案,必須分別指明鍵和值的型別:
mapword_count;map的建構函式:
mapm; 建立乙個名為m的空map物件,其鍵值型別分別為k和v
mapm(m2); 建立m2的副本m, m與m2必須有相同的鍵值型別
mapm(b,e); 建立map型別的物件,儲存迭代器b和e標記的範圍內所有元素的副本,元素的型別必須能轉化為pair
map物件的元素是鍵-值對,map的value_type反映了這樣的事實,value_type是儲存元素的鍵以及值的pair型別,而且鍵為const,比如word_count的型別為:
pair型別
map類定義的型別:
map::key_type 在map容器中,用作索引的鍵的型別
map迭代器進行解引用將產生pair型別的物件
map::iterator map_it=word_count.begin();使用insert成員實現或者先用下標操作符獲取元素,然後給獲取的元素賦值cout
cout
<
"map_it->first="
new key"//
error
++map_it->second
使用下標訪問map物件
mapwoed_count; //map的下標也使用索引(就是鍵)來獲取該鍵所關聯的值,如果該鍵已在容器中,則map的下標運算行為相同,返回該鍵所關聯的值。只有在所查詢的鍵不存在的時候,map容器才為該鍵建立乙個新的元素,並將它插入到此map物件中。空map
word_count["
anna
"]=1; //
插入預設的初始元素(鍵:anna, 值:1)
1、下標操作符返回值的使用
下標操作符返回的是左值,即使特定鍵所關聯的值
cout2、下標行為的程式設計意義anna"];
++word_count["
anna"];
count
anna
"];
如果下標所表示的鍵在容器中不在,則新增新元素,這一特性可使程式驚人的簡練:
mapword_count;這段程式用來記錄每個單詞出現的次數string
word;
while(cin>>word)
++word_count[word];
程式設計練習:編寫程式統計並輸出所讀入的單詞出現的次數
#include#include插入單個元素的insert版本使用鍵-值pair型別的引數,對於引數為一對迭代器的版本,迭代器必須指向鍵-值pair型別的元素#include
#include
#include
using
namespace
std;
intmain()
map容器的接受單個值的insert版本的返回型別
使用下標給map新增新元素,元素的值部分將採用值初始化,而插入元素的另乙個方法是:直接使用insert成員,語法更緊湊:
word_count.insert(map::value_type("傳遞給insert的實參相當的笨拙,可以用兩種方法簡化:anna
",1));
使用make_pair
word_count.insert(make_pair("或使用typedef:anna
",1));
typedef map::value_type valtype;檢測insert的返回值word_count.insert(valtype(
"anna
", 1))
如果試圖插入的元素所對應的鍵已經在容器中,則insert將不做任何操作,但是帶有乙個鍵-值pair形參的insert版本將返回乙個值:包含乙個迭代器和乙個bool值的pair物件,其中迭代器指向map中具有相應鍵的元素,而bool值則表示是否插入了該元素
下面使用insert重寫的單詞統計程式:
#include#include下標操作符讀取乙個值會產生***,map容器提供了兩個操作:count和find,用於檢查某個鍵是否存在而不會插入該鍵#include
#include
#include
using
namespace
std;
intmain()
map::iterator it;
for(it=word_count.begin(); it!=word_count.end(); it++)
cout
return0;
}
m.count(k) 返回m中k的出現次數
m.find(k) 如果m容器中存在按k索引的元素,則返回指向該元素的迭代器。如果不存在,則返回超出末端迭代器
1、使用count檢查map物件中某鍵是否存在
對於map物件,count成員的返回值只能是0或1,map容器只允許乙個鍵對應乙個例項,所有count可有效地表明乙個鍵是否存在
mapword_count;2、讀取元素而又不插入該元素int occurs=0
;if(word_count.count("
foo"
)) occurs=word_count["
foo"];
find操作返回指向元素的迭代器,如果元素不存在,則返回end迭代器
STL map詳細用法
map翻譯為對映,我們之前所用到的int就是乙個int 對int的對映,我們還用到過char float,double,string 這都是int轉換各個型別的對映。使用map可以將任意型別的基本型別建立對映對映到任意基本型別,都包括stl的容器 若要使用map需要新增map標頭檔案除此之外還要新增...
STL map 常用用法詳解
stl 通用函式總結 1.標頭檔案 include2.定義 建立key value的對應 map mapstudent 定義乙個用int作為索引,並擁有相關聯的指向string3.常用操作 3.1在map中插入元素 mapstudent.insert pair 1,one 用insert方法插入pa...
STL map中key為結構體的用法
最近在使用stl中的map容器時,碰到key為結構體的情況,總結如下,以便提醒自己。我的使用情景是,我需要根據不同的比例尺 道路型別這兩個引數獲取到對應的道路寬度,由於我是使用map解決這個問題的,自然而然的就以比例尺 道路型別這兩個引數為key,道路寬度為value,建立的key如下 1typed...