为什么无序容器不提供定义最小负载系数的接口?

时间:2013-08-16 14:25:52

标签: c++ c++11

我试图理解为什么哈希表(无序容器,如unordered_map或unordered_set)不提供查询或设置最小负载因子的接口。

假设c是unordered_set,我可以使用

c.max_load_factor()

用于查询

c.max_load_factor(val)

进行设置。

为什么C ++ 11没有提供查询min_load_factor的接口?是否有实施细节,可以解释一下?

此外,Josuttis的C ++ STL提到:

当容器中的元素数量缩小时,用于强制重新散列的最小负载系数不会受到影响。

1 个答案:

答案 0 :(得分:1)

unordered_map上的加载因子会影响哈希表中的冲突概率。例如,两个元素位于同一个桶中的概率。容器使用max_load_factor的值作为阈值,强制增加桶的数量,从而导致重新散列。

没有用户可控制的最小负载系数,因为它应该尊重容器中已有的元素数量。