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

std::

unordered_multimap::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_multimap::reserve
#include <iostream>
#include <string>
#include <unordered_map>

int main ()
{

  std::unordered_multimap<std::string,std::string> myumm;

  myumm.reserve(7);

  myumm.insert({{"apple","NY"},{"apple","WA"},{"peach","GA"}});
  myumm.insert({{"orange","FL"},{"cherry","UT"}});
  myumm.insert({{"strawberry","LA"},{"strawberry","NC"}});

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

  return 0;
}

可能输出:
strawberry: LA
strawberry: NC
cherry: UT
orange: FL
apple: NY
apple: WA
peach: GA

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

✥ 复杂度



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

☣ 迭代器的有效性



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

🍄  另请参阅



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

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