【发布时间】:2017-06-21 06:47:22
【问题描述】:
要将一个元素放入,比如说,一个无序集合,我们计算它的哈希并将其放入相应的桶中。然而,我们通常有比散列函数的值范围少得多的桶。 buckets和hash值的对应关系是如何计算的?似乎使用了一些函数来反映 (0 ... size_t) -> (0 ... size_of_buckets - 1)。但是即使对于好的散列函数,使用这样的函数也可能导致大量的冲突。
【问题讨论】:
-
为什么要创建自己的散列容器?是学校还是类似的任务?因为否则你应该使用
std::unordered_map。 -
我不想创建自己的。我想知道 std::unordered_map 究竟是如何工作的。正如我所写的那样,理论上这会对性能产生重大影响。