初始化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大小的最佳做法是什么?
答案 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-bb,http://www.boost.org/doc/libs/1_64_0/doc/html/boost/unordered_map.html#idp776318000-bb)
来防止意外的重新哈希