2

unordered_map 如何在内部使用哈希函数来访问属于某个键的存储桶?

std::hash 返回一个 size_t 类型,它可能大于容器中存在的桶数。返回的哈希值如何映射到桶索引?

典型的 unordered_map 实现是按 size() 还是 max_size() 对返回的哈希进行取模,还是会发生更复杂的事情?

4

1 回答 1

5

典型的 unordered_map 实现是按 size() 还是 max_size() 对返回的哈希进行取模,还是会发生更复杂的事情?

几乎。模数是bucket_count(),因为这是哈希表中的桶数。

该标准不要求通过模运算来完成此操作,只是该bucket()函数[0,bucket_count)以某种方式将键值映射到范围,并且具有等效散列的键映射到同一个桶。散列的模数是最直接的方法。

于 2013-09-09T11:40:08.310 回答