map 是鍵-值對的集合。map型別通常可以理解為關聯陣列,其本質在於元素的值和某個特定的鍵向關聯,而非通過元素在陣列中的位置來獲取
宣告與定義:
mapm;
mapword_count;
迭代器:
map:: iterator it;
對鍵型別的約束:鍵型別必須支援"<"操作符
map定義的型別
1.迭代器進行解引用將產生pair 型別的物件
其 first 成員存放鍵,為const 而second 成員則存放值
2. map額外定義的型別別名
map::key_type 為其鍵型別,相當於 string
新增元素:
1.使用下標訪問map物件
word_count["kaixin"] = 1;
這一句話會先在map中查詢是否存在kaixin 這個鍵,如果存在,則把其值賦值為1
如果不存在,其會kaixin插入到map中,然後把其值初始化,然後再給其賦值為1
(1)下標操作符返回值的使用
map迭代器返回是乙個value_type型別的值,其為pair型別,包含const key_type
(2).下標行為的程式設計意義
#include #include #include using namespace std;
mapword_count;
map::iterator it;
int main()
//輸入並統計
//輸出
for(it=word_count.begin();it!=word_count.end();it++)
cout << it->first << " "查詢並讀取map中元素
1.直接用下標讀取 但***是如果該元素不存在,就會插入乙個新的元素
2.m.count(k)
返回m中k出現的次數,其返回值只能為0或1 ,可以判斷該元素是否存在
3.m.find(k)
返回指向元素的迭代器,如果元素不存在,返回指向。m.end()的迭代器
從map物件中刪除元素
m.erase(k) 刪除m中鍵為k的元素,返回size_type型別的值,表示刪除元素的個數
m.erase(p) 刪除迭代器p所指向的元素,p中必須存在m中
m.erase(b,e) 刪除一段範圍內的元素
#include #include #include using namespace std;
mapword_count;
map::iterator it;
int main()
//輸入並統計
word_count.erase(word_count.begin()); //刪除第乙個元素
printf("\n\nthe print %d:\n",word_count.size());
//輸出
for(it=word_count.begin();it!=word_count.end();it++)
cout << it->first << " "map::iterator it;
for(it=word_count.begin();it!=word_count.end();it++)
cout << it->first << " " 先來一道程式看看吧。程式如下如題目要求是定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 現在繼續 定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 其中本來答案中需要in檔案流繫結,我卻用了兩個cin來控制檔案輸入單詞以及行號控制。在這裡需要... pairp1 pairp1 v1,v2 v1為t1型別,v2為t2型別 make pair v1,v2 返回乙個pair物件 p.first p.second 關聯容器不能通過容器大小定義,不能用resize。mapm m2 mapm mapm b,e b,e為map迭代器。鍵必須支援 map ke... 資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值公升序進行輸出。輸入描述 先輸入鍵值對的個數 然後輸入成對的index和value值,以空格隔開 輸出描述 輸出合併後的鍵值對 多行 輸入例子 4 0 10 2 1 23 4 輸出例子 0 3 ...C primer 關聯容器之map
C primer 關聯容器
map關聯容器