C++中的map翻譯為映射,不是地圖!??!也是常用的STL容器。它在算法競賽中應用十分廣泛,因為map可以將任何基本類型(包括STL容器)映射到任何基本類型(包括STL容器),十分靈活。因此我們很有必要來熟練map的常用用法。
目錄
1、map的定義
2、map容器內(nèi)元素的訪問
3、map常用函數(shù)實例解析:
1、find():
2、erase():
3、size():
4、clear():
4、拓展
單獨定義一個map:
mapmp;
其中,typename1是鍵的類型,typename2是值的類型。
注:如果是字符串到整型的映射,必須使用string而不能用char數(shù)組!
mapmp;
這是因為char數(shù)組作為數(shù)組,是不能被作為鍵值的。所以如果想用字符串做映射,必須用string。
再舉個栗子例子:map的鍵和值也可以是STL容器,例如以下代碼將一個set容器映射到一個字符串:
map, string>mp;
2、map容器內(nèi)元素的訪問一般有兩種訪問方式:通過下標訪問或通過迭代器訪問:
1、通過下標訪問:
和普通數(shù)組一樣,例如一個定義為map
mapmp;
mp['c'] = 20;
cout<< mp['c']; //答案輸出20
但是要注意的是,map中的鍵是唯一的,例如以下代碼:
mapmp;
mp['c'] = 20;
mp['c'] = 30; //30覆蓋了20
mp['c'] = 666; //666覆蓋了30
cout<< mp['c']; //答案輸出666
2、通過迭代器訪問:
map迭代器的定義和其他STL容器迭代器定義的方式相同:
map::iterator it;
這樣就得到了迭代器?it 。
map可以使用it->first來訪問鍵,it->second來訪問值:
#include#include
代碼輸出結果:
a 222
b 333
c 444
還有一點要補充,就是map會以鍵從小到大的順序自動排序,如:
mp['c'] = 222;
mp['a'] = 333;
mp['b'] = 444;
順序輸出結果是(即按a< b< c的順序從小到大排序):
a 333
b 444
c 222
上述現(xiàn)象是因為,map內(nèi)部是由紅黑樹實現(xiàn)的(set也是),在建立映射的過程中,會自動實現(xiàn)從小到大排序功能。
3、map常用函數(shù)實例解析: 1、find():find(key)返回鍵為key映射的迭代器,時間復雜度為O(logN),N為map中映射的個數(shù):
#include#include
輸出結果:
b 333
2、erase():erase()有兩種用法:1、刪除單個元素。2、刪除一個區(qū)間內(nèi)所有的元素。
① 刪除單個元素:
mp.erase(it),it為需要刪除的元素的迭代器。時間復雜度為O(1):
#include#include
輸出結果:
a 222
c 444
mp.erase(key),key為要刪除的映射的鍵。時間復雜度O(logN),N為map內(nèi)元素的個數(shù):
#include#include
輸出結果:
a 222
c 444
② 刪除一個區(qū)間內(nèi)所有的元素:
mp.erase(first, last),其中,first為需要刪除的區(qū)間的起始迭代器,last為需要刪除的區(qū)間末尾迭代器的下一個地址,即為刪除左閉右開的區(qū)間[first, last)。時間復雜度為O(last - first):
#include#include
輸出結果:
a 222
3、size():size()用來獲得map中映射的對數(shù),復雜度為O(1)。
#include#include
輸出結果:
3
4、clear():clear()用來清空map中的所有元素,復雜度為O(N),N為map中元素個數(shù):
#include#include
輸出結果:
0
4、拓展map的鍵和值是唯一的,如果需要一個鍵對應多個值,就只能用multimap。另外,C++11標準新增了unordered_map,以散列代替map內(nèi)部的紅黑樹實現(xiàn),使其可以用來處理只映射而不按key排序的需求,速度比map要快得多。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享文章:C++map的常用用法(超詳細)(*^?^)人(^?^*)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.rwnh.cn/article4/cchhie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、Google、標簽優(yōu)化、網(wǎng)站設計、面包屑導航、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容