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 |
获取最大负载系数(公众成员函数) |