unordered_map如何在内部使用哈希函数来访问属于密钥的存储桶?
std :: hash返回size_t类型,该类型可能大于容器中存在的桶数。如何将返回的哈希值映射到存储区索引?
典型的unordered_map实现是通过size()还是max_size()执行返回哈希的模数,还是会发生更复杂的事情?
答案 0 :(得分:4)
典型的unordered_map实现是通过size()还是max_size()执行返回哈希的模数,还是会发生更复杂的事情?
几乎。模数为bucket_count()
,因为这是哈希表中的桶数。
标准不要求使用模运算,只需bucket()
函数以某种方式将键值映射到范围[0,bucket_count)
,并且具有等效哈希的键映射到同一桶。散列的模数是最直接的方法。