【发布时间】:2013-08-16 14:25:52
【问题描述】:
我试图理解为什么哈希表(无序容器,如 unordered_map 或 unordered_set)不提供用于查询或设置最小负载因子的接口。
说c是unordered_set,我可以用
c.max_load_factor()
用于查询
和
c.max_load_factor(val)
用于设置。
为什么 C++11 不提供查询 min_load_factor 的接口?是否有实施细节,可以解释?
此外,Josuttis 的 C++ STL 提到:
最小负载因子,用于在容器中元素数量收缩不受影响时强制rehashing。
【问题讨论】:
-
猜测是这样删除元素不必分配内存并且不会失败(也许除非析构函数抛出,在这种情况下你责怪元素类型而不是容器)。我不知道这是否是真正的原因,但可能还有另一个更强大的原因。
-
@SteveJessop:我想说它与许多其他容器一致:
vector和deque都不会自动收缩。 -
最小负载系数是什么意思?在重新调整大小之前它会变得多小?
-
@andre:是的,我会说哈希重新哈希之前的最小大小。
-
@MatthieuM:是的,可能出于同样的原因?或者在
vector的情况下,因为还有尊重的能力。