C++ STL中的unordered_set rehash()函数

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。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程