[英]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.