C++ STL 中的 unordered_map rehash

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程