map和unordered_map的區別


如何選擇?

 

 

如果你想要一個具有排序后的數據的話,通常可以選擇map這種類型。或者想要打印具有一定順序的元素。

如果你只想記錄數據而不是想要將數據進行排序的話,那么就可以選擇unordered_map這種數據結構。
注意:unordered_map是在c++11出現的,需要包含<unordered_map>頭文件。
 

排序

map: 在默認情況下,按照鍵遞增的排序順序

unordered_map :無序(順序可能是亂的,不一定是數據的輸入順序) 

 

底層實現

map :在map內部采用了自平衡的BST(二叉搜索樹)的數據結構,實現了數據排序

unordered_map: 內部采用了哈希表的數據結構

 

搜索(查找)時間復雜度

map: 該類型的搜索時間復雜度為log(n)

unordered_map : 搜索時間復雜度。O(1)為平均時間,最壞情況下的時間復雜度為O(n);

 

 

插入操作的時間復雜度

map : 該操作的時間 復雜度為log(n)+再平衡時間

unordered_map : 該操作的時間復雜度與搜索的時間復雜度一樣。

 

刪除操作的時間復雜度

刪除操作的時間復雜度與插入操作的時間復雜度是一樣的。

 

來源:https://jingyan.baidu.com/article/851fbc377ed5f73e1e15ab10.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM