Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

unordered_map::rehash

公众成员函数  <unordered_map>
void reserve ( size_type n );

重组存储桶

将容器中的桶数(bucket_count)设置为最合适的,至少包含n个元素。

如果n大于当前的bucket_count乘以max_load_factor, 容器的bucket_count将增加,并强制rehash

如果n小于此值,则函数可能不起作用。

☲  参数


n
作为最小容量要求的元素数量。
size_type是一种无符号整型。

☉  返回值



none

☣  示例



// unordered_map::reserve
#include <iostream>
#include <string>
#include <unordered_map>

int main ()
{
  std::unordered_map<std::string,std::string> mymap;

  mymap.reserve(6);

  mymap["house"] = "maison";
  mymap["apple"] = "pomme";
  mymap["tree"] = "arbre";
  mymap["book"] = "livre";
  mymap["door"] = "porte";
  mymap["grapefruit"] = "pamplemousse";

  for (auto& x: mymap) {
    std::cout << x.first << ": " << x.second << std::endl;
  }

  return 0;
}

可能输出:
book: livre
house: maison
grapefruit: pamplemousse
tree: arbre
apple: pomme
door: porte

通过使用unordered_map容器的预期大小调用reserve,我们避免了容器大小的增加可能产生的多次重哈希, 并优化了哈希表的大小。

✥ 复杂度



如果重组发生,一般情况:容器大小呈线性.最坏情况:容器大小的二次方。

☣ 迭代器的有效性



如果发生rehash,所有的迭代器都失效,但是对单个元素的引用和指针仍然有效。 如果没有实际的rehash,则不会发生任何更改。

🍄  另请参阅



unordered_map::bucket_count 返回存储桶的数量(公众成员函数)
unordered_map::size 返回容量(公众成员函数)
unordered_map::rehash 设置存储桶数(公众成员函数)
unordered_map::max_load_factor 获取最大负载系数(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图