Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
unordered_map 如何在内部使用哈希函数来访问属于某个键的存储桶?
std::hash 返回一个 size_t 类型,它可能大于容器中存在的桶数。返回的哈希值如何映射到桶索引?
典型的 unordered_map 实现是按 size() 还是 max_size() 对返回的哈希进行取模,还是会发生更复杂的事情?
几乎。模数是bucket_count(),因为这是哈希表中的桶数。
bucket_count()
该标准不要求通过模运算来完成此操作,只是该bucket()函数[0,bucket_count)以某种方式将键值映射到范围,并且具有等效散列的键映射到同一个桶。散列的模数是最直接的方法。
bucket()
[0,bucket_count)