我试图理解为什么哈希表(无序容器,如unordered_map或unordered_set)不提供查询或设置最小负载因子的接口。
假设c是unordered_set,我可以使用
c.max_load_factor()
用于查询
和
c.max_load_factor(val)
进行设置。
为什么C ++ 11没有提供查询min_load_factor的接口?是否有实施细节,可以解释一下?
此外,Josuttis的C ++ STL提到:
当容器中的元素数量缩小时,用于强制重新散列的最小负载系数不会受到影响。
答案 0 :(得分:1)
unordered_map
上的加载因子会影响哈希表中的冲突概率。例如,两个元素位于同一个桶中的概率。容器使用max_load_factor
的值作为阈值,强制增加桶的数量,从而导致重新散列。
没有用户可控制的最小负载系数,因为它应该尊重容器中已有的元素数量。