map羹与、unordered_map故硅、multimap、unordered_multimap的區(qū)別

一纵搁、map和unordered_map的區(qū)別

(1)需要引入的頭文件不同

map: #include <map>
unordered_map: #include <unordered_map>

(2)內(nèi)部實現(xiàn)機理不同

<1>map

map內(nèi)部實現(xiàn)了一個紅黑樹(紅黑樹是非嚴(yán)格平衡二叉搜索樹吃衅,而AVL是嚴(yán)格平衡二叉搜索樹),紅黑樹具有自動排序的功能腾誉,因此map內(nèi)部的所有元素都是有序的徘层,紅黑樹的每一個節(jié)點都代表著map的一個元素。因此利职,對于map進行的查找趣效,刪除,添加等一系列的操作都相當(dāng)于是對紅黑樹進行的操作猪贪,其時間復(fù)雜度都是O(logn)跷敬,最壞和平均都是。map中的元素是按照二叉搜索樹(又名二叉查找樹热押、二叉排序樹西傀,特點就是左子樹上所有節(jié)點的鍵值都小于根節(jié)點的鍵值,右子樹所有節(jié)點的鍵值都大于根節(jié)點的鍵值)存儲的桶癣,使用中序遍歷可將鍵值按照從小到大遍歷出來拥褂。

<2>unordered_map

unordered_map內(nèi)部實現(xiàn)了一個哈希表(也叫散列表,通過把關(guān)鍵碼值映射到Hash表中一個位置來訪問記錄鬼廓,查找的時間復(fù)雜度可達到O(1)肿仑,其在海量數(shù)據(jù)處理中有著廣泛應(yīng)用)。因此碎税,其元素的排列順序是無序的尤慰。但是并不是unordered_map查詢時間一定比map短,因為實際情況中還要考慮到數(shù)據(jù)量雷蹂,而且unordered_map的hash函數(shù)的構(gòu)造速度也沒那么快伟端,所以不能一概而論,應(yīng)該具體情況具體分析匪煌。

hash_mapunordered_map的底層實現(xiàn)是一樣的责蝠,但是在C++11中將unordered_map引入了標(biāo)準(zhǔn)庫,而hash_map沒有萎庭,所以建議還是使用unordered_map比較好霜医。
unordered_set就是在哈希表插入value,而這個value就是它自己的key驳规。

(3)優(yōu)缺點

<1>map
  • 優(yōu)點
    (1)有序性肴敛,這是map結(jié)構(gòu)最大的優(yōu)點,其元素的有序性在很多應(yīng)用中都會簡化很多的操作;
    (2)紅黑樹医男,內(nèi)部實現(xiàn)一個紅黑書使得map的很多操作在logn的時間復(fù)雜度下就可以實現(xiàn)砸狞,因此效率非常的高
  • 缺點
    空間占用率高,因為map內(nèi)部實現(xiàn)了紅黑樹镀梭,雖然提高了運行效率刀森,但是因為每一個節(jié)點都需要額外保存父節(jié)點、孩子節(jié)點和紅/黑性質(zhì)报账,使得每一個節(jié)點都占用大量的空間研底。
<2>unordered_map
  • 優(yōu)點
    因為內(nèi)部實現(xiàn)了哈希表,因此其查找速度非常的快笙什。
  • 缺點
    哈希表的建立比較耗費時間飘哨。

(4)適用性

<1>map

對于那些有順序要求的問題,用map會更高效一些

<2>unordered_map

對于查找問題琐凭,unordered_map會更加高效一些芽隆,因此遇到查找問題,常會考慮一下用unordered_map统屈。
對于unordered_mapunordered_set容器胚吁,其遍歷順序與創(chuàng)建該容器時輸入的順序不一定相同,因為遍歷是按照哈希表從前往后依次遍歷的愁憔。

(5)使用

unordered_map的用法和map完全是一樣的腕扶,提供了 insert,size吨掌,count半抱,find等操作,并且里面的元素也是以pair類型來存貯的膜宋。其底層實現(xiàn)是完全不同的窿侈,上方已經(jīng)解釋了,但是就外部使用來說卻是一致的

二秋茫、map和multimap的區(qū)別

multimap容器保存的是有序的鍵/值對史简,但是可以保存重復(fù)的元素multimap中會出現(xiàn)具有相同鍵值的元素序列肛著。multimap大部分成員函數(shù)的使用方式和map相同圆兵。因為重復(fù)鍵的原因,multimap有一些函數(shù)的使用方式和map有一些區(qū)別枢贿。

<1>訪問元素

multimap不支持下標(biāo)運算符殉农,因為鍵并不能確定一個唯一元素。和 map 相似局荚,multimap 也不能使用 at() 函數(shù)统抬。

<2>刪除元素
  • 以待刪除元素的迭代器作為參數(shù),這個函數(shù)沒有返回值;
  • erase()函數(shù)以一個鍵作為參數(shù)聪建,它會刪除容器中所有含這個鍵的元素,返回容器中被移除元素的個數(shù)
  • 接受兩個迭代器參數(shù)茫陆,這個范圍內(nèi)的所有元素都會被刪除金麸。
<3>count函數(shù)

multimap 的成員函數(shù) count() 可以知道有多少個元素的鍵和給定的鍵相同。

三簿盅、unordered_multimap

在該數(shù)據(jù)結(jié)構(gòu)里面的元素沒有順序挥下,并且可以有多個key值相同

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桨醋,一起剝皮案震驚了整個濱河市棚瘟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喜最,老刑警劉巖偎蘸,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瞬内,居然都是意外死亡迷雪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門虫蝶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來章咧,“玉大人,你說我怎么就攤上這事能真×扪希” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵粉铐,是天一觀的道長疼约。 經(jīng)常有香客問我,道長秦躯,這世上最難降的妖魔是什么忆谓? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踱承,結(jié)果婚禮上倡缠,老公的妹妹穿的比我還像新娘。我一直安慰自己茎活,他們只是感情好昙沦,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著载荔,像睡著了一般盾饮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天丘损,我揣著相機與錄音普办,去河邊找鬼。 笑死徘钥,一個胖子當(dāng)著我的面吹牛衔蹲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呈础,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼舆驶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了而钞?” 一聲冷哼從身側(cè)響起沙廉,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臼节,沒想到半個月后撬陵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡官疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年袱结,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片途凫。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡垢夹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出维费,到底是詐尸還是另有隱情果元,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布犀盟,位于F島的核電站而晒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阅畴。R本人自食惡果不足惜倡怎,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贱枣。 院中可真熱鬧监署,春花似錦、人聲如沸纽哥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽春塌。三九已至晓避,卻和暖如春簇捍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俏拱。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工暑塑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锅必。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓梯投,卻偏偏與公主長得像,于是被迫代替她去往敵國和親况毅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345