何时对无序关联容器进行重新散列?

时间:2012-03-26 23:13:40

标签: c++ c++11 unordered-map unordered-set

我在标准中发现这是无序关联容器中rehash函数的后置条件:

  

发布:a.bucket_count()> a.size()/ a.max_load_factor() a.bucket_count()> = n。   (n是容器中的桶数)

我是否可以采取上述措施,表示当所有实施都满足上述条件之一时会触发自动重组?或者,实现是否可以自由决定何时重新进行更新,以上内容仅适用于rehash函数?

1 个答案:

答案 0 :(得分:8)

实施应保留load_factor() <= max_load_factor()load_factor() == size() / bucket_count()。因此,在insert期间可以进行自动重新散列以保持负载因子不变。

虽然load_factor()不能超过max_load_factor(),但我认为即使您可以证明不会违反此不变量,也无法保证在插入过程中不会进行任何重复操作。

max_load_factor的定义是:

  

返回容器尝试保持负载的正数   因子小于或等于。容器自动增加   保持负载系数低于此值所需的桶数   号。