日常學習 STL之map

2021-06-28 16:31:01 字數 1570 閱讀 8380

對map最初的印象,源於王建德老師在山東noip夏令營上那銷魂的一句「map,i,j」(音:嘜頗,挨,傑= =)ruka上對map並沒有講很多,ty菌說map主要用來寫雜湊(雖然她曾用它寫過鄰接矩陣= =迴圈巢狀map intorz),而李晨和里奧甚至表示基本不用map。但是既然有這一項奇妙的東西,想必是有用的,把前兩節學的總結一下。

map::iterator map_it = word_count.begin();//可以這樣理解麼:給乙個乙個關聯容器map的乙個迭代器用.begin()成員函式賦值,賦值的結果是word_count的第乙個值

cout << map_it->first;

迭代器就是指標。指向這個關聯容器,關聯容器有鍵和值,first就是鍵,second就是值。

這個程式後面還有一句

++map_it->second;這個這麼理解呢?

寫成++map_it->second;這樣不好理解的話,你都寫成++(*map_it).second;//自己補充:map_it迭代器相當於指標

其實就是指標。這裡應該是對應鍵的值加1。

map具有去重和自動排序功能,可以用count查出現次數,但是返回值最大是1;但multisets,multimaps返回值可以大於1【已證實

這裡引用一下本站fangrk老師的話

我們判斷乙個key是否存在,如果存在就輸出,不存在就不輸出

mapa;

cout<

如果a中間原本沒有"abc",那麼a["abc"]會把"abc"加入到a中間,因此不能使用這種方法

if(a.count("china"))        //對了

cout<

這種方法正確,但是效率不高:count先要查詢一遍a,然後a["china"]又要查詢一遍,我建議使用下面的方法:

map::iterator fi=a.find("china");//查詢是否有"china",返回乙個迭代器

if(fi!=a.end()) cout

宣告:

需要用到頭檔案map

mapcnt  建立乙個map對映,鍵(key,就是下標)基型別為string,所指向的元素值(value)基型別為int,這個對映的名字叫做cnt

常用函式:

基本和set一致,支援insert、find、count、remove等。這裡補充一下cnt.count()是用於查詢某元素出現次數的函式 具體規則上面有介紹

是很好的學習,有空可以常看一看。對這些東西現在我還知之甚少,我想在之後的學習過程中會慢慢加深,慢慢透過迷霧摸到它本質上的存在。

——傷情處,高城望斷,燈火已黃昏

STL之map學習例項

1 2 include3 include4 include5 include6 include7 include8 include9 using namespace std 1011 define sale depatment 1 銷售部門 12 define develop depatment 2...

日常學習 語法 STL之set

今天剛剛學習了set 在我寫這篇文章之前 請允許我首先對ty菌表示誠摯的感激 請教ty菌之前我眼裡ruka簡直不知所云tut set是乙個集合 和康托前輩的一樣 集合中的元素不重複 且集合中的元素是有序的 自動有序化 ty菌介紹說其內部實質是乙個平衡樹 set不是陣列 只能通過迭代器 iterato...

STL學習之map與multimap操作練習

stl map.cpp 定義控制台應用程式的入口點。map為標準關聯式容器,乙個map是乙個鍵值對序列,即 key,value 對,提供基於key的快速檢索能力 map的鍵值唯一,集合中元素按一定順序排列,元素插入過程按順序規則插入,不能指定插入位置 map可以直接取key所對應的value,支援操...