關聯容器操作(2)
map的下標操作
map和unordered_map容器提供了下標運算符合乙個相應的at函式
對於乙個map使用下標操作,其行為與陣列或vector上的下標操作非常不同樣:
使用乙個不再容器中的keyword作為下標。會加入乙個此keyword的元素到map中
map和unordered_map的下標操作
c[k] 返回keyword為k的元素。假設keywordk不再c中。加入乙個keyword為k的元素。對其進行值初始化
c.at(k) 訪問keyword為k的元素。帶引數檢測,假設k不再c重那麼返回乙個異常,out_of_range
與vector和string不同,map下標運算子返回的型別與解引用map迭代器得到的型別不同。
假設我們關心的僅僅只是是特定元素是否在容器中的時候。泛型演算法find是最佳的選擇
void fun1()
; iset.find(1); //返回乙個迭代器,指向key==1的元素
iset.find(11); //返回乙個迭代器,值指向iset.end()
iset.count(1); //返回1
iset.count(11); //返回0
}
今天上傳的有點晚了,放假了,人也懶了- -
下標操作會自己主動加入元素,不好
void fun2()
); }
else
throw runtime_error(" no rule for "+key);
}return trans_map;
}const string & transform(const string &s, const map&m)
else
}void word_transform(ifstream &map_file, ifstream &input)
; iset.find(1); //返回乙個迭代器。指向key==1的元素
iset.find(11); //返回乙個迭代器。值指向iset.end()
iset.count(1); //返回1
iset.count(11); //返回0
}//對map使用find取代下標操作
//下標操作會自己主動加入元素。不好
void fun2()
); } else throw runtime_error(" no rule for "+key); } return trans_map; } const string & transform(const string &s, const map&m) else } void word_transform(ifstream &map_file, ifstream &input) ;
iset.find(1); //返回乙個迭代器,指向key==1的元素
iset.find(11); //返回乙個迭代器,值指向iset.end()
iset.count(1); //返回1
iset.count(11); //返回0
}
今天上傳的有點晚了,放假了,人也懶了- -
下標操作會自己主動加入元素,不好
void fun2()
); }
else
throw runtime_error(" no rule for "+key);
}return trans_map;
}const string & transform(const string &s, const map&m)
else
}void word_transform(ifstream &map_file, ifstream &input)
; iset.find(1); //返回乙個迭代器。指向key==1的元素
iset.find(11); //返回乙個迭代器。值指向iset.end()
iset.count(1); //返回1
iset.count(11); //返回0
}//對map使用find取代下標操作
//下標操作會自己主動加入元素。不好
void fun2()
); } else throw runtime_error(" no rule for "+key); } return trans_map; } const string & transform(const string &s, const map&m) else } void word_transform(ifstream &map_file, ifstream &input) { auto trans_map=bulidmap(map_file); //儲存轉換規則 string text; //儲存輸入中的沒一行 while(getline(input, text)) //讀取輸入一行 { istringstream stream(text); //讀取每乙個單詞 string word; bool firstword=true; //控制是否列印空格 while(stream>>word) { if(firstword) firstword=false; else cout<<" "; //在單詞之間列印乙個空格 //transform返回它的第乙個引數或其轉換之後的形式 // cout《我但是為了這個吃了不少苦頭。
ps:放假了,我預計最多把今天寫完了,明天開始大概要停更了,大家不要停止學習哦,一起加油,一起努力,這本書我還是會看下去的,僅僅是部落格可能更不了了。
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...
C Primer 筆記 關聯容器
關聯容器 associative container 支援通過鍵來高效的查詢和讀取元素。map 關聯陣列,元素通過鍵來儲存和讀取 set 大小可變的集合,支援通過鍵來快速讀取 multimap 支援同乙個鍵出現多次的map型別 multiset 支援同乙個鍵多次出現的set型別 pairp1 建立乙...
c primer 關聯容器 map
map 是鍵 值對的集合。map型別通常可以理解為關聯陣列,其本質在於元素的值和某個特定的鍵向關聯,而非通過元素在陣列中的位置來獲取 宣告與定義 mapm mapword count 迭代器 map iterator it 對鍵型別的約束 鍵型別必須支援 操作符 map定義的型別 1.迭代器進行解引...