關聯容器支援高效的關鍵字查詢和訪問,兩個主要的關聯容器:map和set。
map中的元素是 關鍵字-值 對(key-value),關鍵字起索引作用。
set中只包含乙個關鍵字。預設set是 無重複元素+有序儲存的。除非加上unordered、multi修飾。
map定義及初始化
mapword_count; //空容器
mapauthors =,
,}; //直接初始化
map封裝好的功能
auto mp_it = word_count.begin(); //定義乙個迭代器,指向map首元素
mp_it->first //string關鍵字
mp_it->second //int 值
支援begin和end操作
word_count.begin();
word_count.end();
新增元素
word_count.insert(); //花括號方式
word_count.insert(make_pair(「and」, 5)); //pair方式
返回的是乙個pair,pair.first是指向插入元素的迭代器;pair.second是bool,true代表插入成功。
例:
auto ret = word_count.insert(make_pair("and", 5));
if( ret.second ) //代表插入成功
刪除元素
word_count.erase("and"); //刪除關鍵字為and的元素,返回刪除數量
word_count.erase(it); //刪除迭代器it指向的元素,返回it之後元素的迭代器
word_count.erase(it1, it2); //刪除兩個迭代器之間的元素,返回it2
訪問元素
使用find或者count函式。
word_count.find("and"); //返回迭代器,第一次and出現位置
word_count.count("and"); //返回and出現的次數
/* 無序容器不建議使用lower_bound() upper_bound() equal_range()*/
map實現-統計單詞出現次數
mapword_count;
string str;
while(cin>>str)
++word_count[str]; //下標操作,如果有str,加1;如果沒有,會自動插入
for(const auto it : word_count)
cout<
C 關聯容器之map
認識map map型別通常被稱為關聯陣列,關聯陣列與 正常 陣列類似,不同之處在於其下標不必是整數。map是標準的關聯式容器,乙個map是乙個鍵值對序列,即 key,value 對。它提供基於key的快速檢索能力。map中key值是唯一的。集合中的元素按一定的順序排列。元素插入過程是按排序規則插入,...
c 之關聯容器map
map是關鍵字 值對的集合,元素是一些關鍵字 值對 字典 按關鍵字有序儲存元素 標頭檔案 include建立map mapm 建立乙個map,關鍵字為tk型別,值為tv型別 mapm1 建立乙個map,關鍵字為tk型別,值為tv型別,新增元素key value新增元素 mapm 建立乙個map,關鍵...
C primer 關聯容器之map
先來一道程式看看吧。程式如下如題目要求是定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 現在繼續 定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號 其中本來答案中需要in檔案流繫結,我卻用了兩個cin來控制檔案輸入單詞以及行號控制。在這裡需要...