C++ STL中的unordered_set rehash()函数
unordered_set::rehash() 是C ++ STL中的内置函数,用于将unordered_set的容器中的桶数设置为给定大小或更多。如果大小大于容器的当前大小,则调用rehash。如果它小于当前大小,则该函数对哈希桶的计数没有影响。 语法 :
unordered_set_name.rehash(size_type n)_
参数 :该函数接受一个必需的参数n,指定容器的最小桶数。
返回值 :此函数不返回任何内容。下面的程序说明unordered_set::rehash()函数:
程序1:
// C ++程序,说明
// unordered_set::rehash()
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main()
{
// 声明
unordered_set<string> us;
// 重新散列
us.rehash(9);
// 插入元素
us.insert("geeks");
us.insert("for");
us.insert("geeks");
us.insert("users");
for (auto it = us.begin(); it != us.end(); it++) {
cout << *it << " ";
}
cout << "\n桶数是 "
<< us.bucket_count();
return 0;
}
输出:
users for geeks
桶数是11
注:这里我们rehash(9),这意味着给定unordered_set中的桶数为9,但是这里打印的是11,因为11是9之后的第一个质数,所以打印的是11而不是9。
程序2:
// C ++程序,说明
// unordered_set::rehash()
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main()
{
// 声明
unordered_set<string> us;
// 重新散列unordered_set
us.rehash(20);
// 插入字符串
us.insert("geeks");
us.insert("for");
us.insert("geeks");
us.insert("users");
us.insert("are");
us.insert("experts");
us.insert("in");
us.insert("DS");
// 打印元素
for (auto it = us.begin(); it != us.end(); it++) {
cout << *it << " ";
}
cout << "\n桶数是 "
<< us.bucket_count();
return 0;
}
输出:
DS in experts are users for geeks
桶数是23
注:这里我们rehash(20),这意味着给定unordered_set中的桶数为20,但是这里打印的是23,因为23是20之后的第一个质数,所以打印的是23而不是20。