c primer 關聯容器 map

2021-07-23 10:12:03 字數 1677 閱讀 3123

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 << " "

C primer 關聯容器之map

先來一道程式看看吧。程式如下如題目要求是定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 現在繼續 定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 其中本來答案中需要in檔案流繫結,我卻用了兩個cin來控制檔案輸入單詞以及行號控制。在這裡需要...

C primer 關聯容器

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...

map關聯容器

資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值公升序進行輸出。輸入描述 先輸入鍵值對的個數 然後輸入成對的index和value值,以空格隔開 輸出描述 輸出合併後的鍵值對 多行 輸入例子 4 0 10 2 1 23 4 輸出例子 0 3 ...