c++中map與unordered_map的區別

c++中map與unordered_map的區別

標籤: c++map
4398人閱讀 評論(1) 收藏 舉報
分類:

目錄(?)[+]

c++中map與unordered_map的區別

頭文件

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

內部實現機理

  • map: map內部實現了一個紅黑樹,該結構具有自動排序的功能,因此map內部的所有元素都是有序的,紅黑樹的每一個節點都代表着map的一個元素,因此,對於map進行的查找,刪除,添加等一系列的操作都相當於是對紅黑樹進行這樣的操作,故紅黑樹的效率決定了map的效率。
  • unordered_map: unordered_map內部實現了一個哈希表,因此其元素的排列順序是雜亂的,無序的

優缺點以及適用處

  • map
    • 優點
      • 有序性,這是map結構最大的優點,其元素的有序性在很多應用中都會簡化很多的操作
      • 紅黑樹,內部實現一個紅黑書使得map的很多操作在lgn的時間複雜度下就可以實現,因此效率非常的高
    • 缺點:
      • 空間佔用率高,因爲map內部實現了紅黑樹,雖然提高了運行效率,但是因爲每一個節點都需要額外保存父節點,孩子節點以及紅/黑性質,使得每一個節點都佔用大量的空間
    • 適用處,對於那些有順序要求的問題,用map會更高效一些
  • unordered_map
    • 優點:
      • 因爲內部實現了哈希表,因此其查找速度非常的快
    • 缺點:
      • 哈希表的建立比較耗費時間
    • 適用處,對於查找問題,unordered_map會更加高效一些,因此遇到查找問題,常會考慮一下用unordered_map

note:

  • 對於unordered_map或者unordered_set容器,其遍歷順序與創建該容器時輸入元素的順序是不一定一致的,遍歷是按照哈希表從前往後依次遍歷的
發佈了8 篇原創文章 · 獲贊 22 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章