![](/img/trans.png)
[英]What is the “right” way to use a GUID as the key in std::hash_map
[英]C++ std::hash_map: What is the key's role
兩者maps
和hash_maps
被設計成保持pairs
的<key, data>
。 我很清楚為什么地圖應該有一個關鍵進行排序(更確切地說是樹形),但是我不明白為什么hash_maps需要一個鍵,為什么它的數據不能單獨散列並放入哈希表?
我無法在文檔中找到答案,也無法在網上搜索。
std::unordered_set
可以按照您描述的方式工作。 但是,有時您希望從一個數據映射到另一個數據; 這就是std::unordered_map
發揮作用的地方。
走到櫥櫃。 拿出電話簿並查找一個號碼。 它有一個名稱和數字之間的映射
你正在尋找一個集合 ,其中一個鍵也是數據。
C ++提供了一些不同的風格: set , unordered_set等......
哈希映射也稱為Unordered Map
它使用KEY
的HASH
作為桶或槽的index
。換句話說,任何哈希表都需要一個哈希函數來計算一個桶或槽數組的index
,從中可以得到正確的值可以找到。這些index
是哈希表的密鑰,用於在最佳情況下在O(1)時間內訪問數據。
如果要將數據本身用作鍵,則相應的容器是std::set
或std::unordered_set
。 地圖包含鍵和值; 之間的差別std::map
和std::unordered_map
是如何將數據組織; std::map
按鍵排序, std::unordered_map
按鍵std::unordered_map
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.