公有成员函数 (public member function)
<unordered_map>
void rehash( size_type 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
|
// unordered_map::rehash
#include <iostream>
#include <string>
#include <unordered_map>
int main ()
{
std::unordered_map<std::string,std::string> mymap;
mymap.rehash(20);
mymap["house"] = "maison";
mymap["apple"] = "pomme";
mymap["tree"] = "arbre";
mymap["book"] = "livre";
mymap["door"] = "porte";
mymap["grapefruit"] = "pamplemousse";
std::cout << "current bucket_count: " << mymap.bucket_count() << std::endl;
return 0;
}
|
可能的输出
通过调用rehash (重新散列)通过预留一定数量的最小桶数到哈希表中,我们可以避免容器扩展可能引起的多次重新散列。
复杂度
在重新哈希的情况下,
平均情况:与 容器大小 线性相关。
最坏情况:与 容器大小 二次相关。
迭代器有效性
如果发生重新哈希,所有迭代器都会失效,但指向单个元素的引用和指针仍然有效。
如果没有实际发生重新哈希,则无变化。