[英]Confused about C++ unordered_map and hash collision
我已經讀過unordered_map在桶中放置具有相同散列的元素,這就是它處理散列沖突的方式。 但是,當我檢查插入功能時 ,它說:
僅當每個元素的鍵不等同於容器中已有的任何其他元素的鍵時,才會插入每個元素
這是否意味着我不能插入具有相同哈希的元素?..我應該能夠插入一個帶有新哈希的元素,因為unordered_map結構可以處理沖突,對吧?我想我可能會遺漏一些東西。
這當然是可能的這些語句是一致的,一旦你意識到哈希不一定是關鍵。
一組不同的密鑰可以生成相同的散列值,因此存儲在同一個存儲桶中,但仍然允許禁止重復密鑰的限制。
例如,假設您使用名字作為密鑰的friends
集合。 哈希函數是(相當簡單)“使用名稱的第一個字母。
因此,雖然Albert,Andrew,Adam,Bill,Benny和Chloe是六個不同的鍵,但它們只占三個不同的哈希值:
A B C (buckets)
______/|\_____ / \ |
/ | \ / \ |
Albert Andrew Adam Bill Benny Chloe (keys)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.