C++ STL 中的 unordered_map rehash
std::unordered_map::rehash() 是 C++ STL 中的一个内置函数,其将容器中的桶的数量设置为 n 或更多。 语法
void rehash( size_type s );
- 如果 s 大于容器中的当前桶,则进行重新哈希。新的桶数可以大于或等于 n。
- 如果 s 小于当前桶的数量,则函数可能会有影响,也可能没有影响。完全取决于编译器。
参数: 它接收容器中的新桶数。
返回类型: 它的返回类型为 none。
示例 1:
// C++ 代码示例,演示 unordered_map rehash 方法
#include <bits/stdc++.h>
using namespace std;
int main() {
unordered_map<char, int> sample;
// 初始化Map
sample = { { 'a', 2 }, { 'b', 4 }, { 'c', 6 } };
cout << "容器的大小为: " << sample.size() << endl;
cout << "初始桶的计数为: " << sample.bucket_count() << endl;
// 更改 rehash
sample.rehash(30);
cout << "容器的大小为: " << sample.size() << endl;
cout << "现在的桶数为: " << sample.bucket_count() << endl;
return 0;
}
输出:
容器的大小为: 3
初始桶的计数为: 5
容器的大小为: 3
现在的桶数为: 31
示例 2:
// C++ 代码示例,演示 unordered_map rehash 方法
#include <bits/stdc++.h>
using namespace std;
int main() {
unordered_map<int, int> sample;
// 初始化Map
sample = { { 2, 2 }, { 3, 4 }, { 4, 6 }, { 5, 8 } };
cout << "容器的大小为: " << sample.size() << endl;
cout << "初始桶的计数为: " << sample.bucket_count() << endl;
// 更改 rehash
sample.rehash(20);
cout << "容器的大小为: " << sample.size() << endl;
cout << "现在的桶数为: " << sample.bucket_count() << endl;
return 0;
}
输出:
容器的大小为: 4
初始桶的计数为: 7
容器的大小为: 4
现在的桶数为: 23