c ++ 11' hash_map::resize(n)
中的unordered_map
相当于什么?早期调整hash_map的大小用于支持:void resize(size_type n)
,将桶数增加到至少n。
答案 0 :(得分:3)
等效于rehash:
Sets the number of buckets in the container to n or more.
rehash指定存储桶数量,而保留为docs:
将容器(bucket_count)中的桶数设置为最适合包含至少n个元素的桶数。
在hash_map::resize的SGI文档中,我已经读过它会更改存储桶的数量,因此IMO rehash是合适的。但hash_map不是标准的,因此各种实现可能会以不同的方式实现它。
另一件事是保留实际上是使用rehash实现的,在gcc 5.3中它看起来如下:
void
reserve(std::size_t __n)
{
__hashtable* __this = static_cast<__hashtable*>(this);
__this->rehash(__builtin_ceil(__n / max_load_factor()));
}
答案 1 :(得分:1)
使用rehash
更改存储桶数量。
使用reserve
来容纳与哈希表的加载因子相关的存储桶数量。来自docs of reserve:
有效拨打
rehash(std::ceil(count / max_load_factor()))
。