公有成員函式 (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 (重新雜湊)透過預留一定數量的最小桶數到雜湊表中,我們可以避免容器擴充套件可能引起的多次重新雜湊。
複雜度
在重新雜湊的情況下,
平均情況:與 容器大小 線性相關。
最壞情況:與 容器大小 二次相關。
迭代器有效性
如果發生重新雜湊,所有迭代器都會失效,但指向單個元素的引用和指標仍然有效。
如果沒有實際發生重新雜湊,則無變化。