相当于c ++ 11< unordered_map中的hash_map :: resize()

时间:2016-04-18 07:56:03

标签: c++11 hashmap unordered-map

c ++ 11' hash_map::resize(n)中的unordered_map相当于什么?早期调整hash_map的大小用于支持:void resize(size_type n),将桶数增加到至少n。

2 个答案:

答案 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()))