如果std :: unordered_map的两个键具有相同的哈希值,标准是否保证它们会进入同一个桶?我们假设根据模板等式谓词,键不相等,它们只有相同的哈希值。
奖金问题:如果相同的散列并不意味着相同的存储桶,那么能够单独遍历存储桶的目的是什么?
答案 0 :(得分:8)
具有相同散列的对象由无序关联容器放入同一个存储桶中。因此,两个相等的对象必须具有相同的散列。
23.2.5第8段:
无序关联容器的元素被组织到存储桶中。具有相同哈希码的密钥出现在同一个桶中。
奖金问题:为什么你想单独遍历水桶?
奖励回答:因为你想并行处理容器的内容。存储桶迭代器彼此独立,因此每个线程可以处理存储桶而不进行协调(前提是没有新的条目添加到容器中)。并且桶的大小应该大致相同,因此它们提供了方便的并行化量。