public member function
<unordered_set>

std::unordered_multiset::reserve

void reserve ( size_type n );
请求容量更改
将容器的桶数(bucket_count)设置为最适合容纳至少 n 个元素的值。

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

如果 n 低于该值,则函数可能无效。

参数

n
请求的最小容量元素数。
成员类型size_type是一种无符号整型类型。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// unordered_multiset::reserve
#include <iostream>
#include <string>
#include <unordered_set>

int main ()
{
  std::unordered_multiset<std::string> myums;

  myums.reserve(5);

  myums.insert("klingon");
  myums.insert("human");
  myums.insert("vulcan");
  myums.insert("klingon");
  myums.insert("klingon");

  std::cout << "myums contains:";
  for (const std::string& x: myums) std::cout << " " << x;
  std::cout << std::endl;

  return 0;
}

可能的输出
myums contains: human klingon klingon klingon vulcan


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

复杂度

在重新哈希的情况下,
平均情况:与 容器大小 成线性关系。
最坏情况:与 容器大小 成二次方关系。

迭代器有效性

如果发生重新哈希,所有迭代器都会失效,但指向单个元素的引用和指针仍然有效。
如果没有实际发生重新哈希,则无变化。

另见