boost :: unordered_multimap是否调整大小

时间:2017-06-09 04:55:03

标签: c++ boost hashtable

初始化boost :: unordered_multimap时,我们定义哈希映射的大小。

explicit unordered_multimap(size_type n = implementation-defined, 
                            hasher const& hf = hasher(), 
                            key_equal const& eq = key_equal(), 
                            allocator_type const& a = allocator_type());

Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.

当哈希映射几乎已满时,它会调整大小吗?它似乎没有这样的API。它会自动完成吗?定义unordered_multimap大小的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

它会自动执行,as documented

  

通过调用insert或调用rehash可以自动增加存储桶数量。

但请记住,收缩时不会重复:Why does C++11/Boost `unordered_map` not rehash when erasing?

您可以通过手动强制降低负载系数并将最大负载系数设置得足够高(http://www.boost.org/doc/libs/1_64_0/doc/html/boost/unordered_map.html#idp776321712-bbhttp://www.boost.org/doc/libs/1_64_0/doc/html/boost/unordered_map.html#idp776318000-bb

来防止意外的重新哈希