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

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

unordered_set::load_factor()是C++ STL中的一个内置函数,用于返回unordered_set容器中的当前负载系数。负载系数是容器中元素数量(即其大小)和存储桶数量(bucket_count)之间的比率:

负载系数 = 大小 / bucket_count

负载系数影响哈希表中碰撞的概率(即两个元素定位在同一个桶中的概率)。当需要扩展容器时,容器会自动增加存储桶的数量,以保持负载系数低于特定阈值(即其max_load_factor),从而导致重新散列。

语法 :

unordered_set_name_.load_factor()

参数 : 该函数不接受任何参数。

返回值 : 该函数返回当前负载系数。它可以是整数或双精度类型。以下程序说明了unordered_set::load_factor()函数: 程序1 :

// C++ program to illustrate the
// unordered_set::load_factor() function
#include <iostream>
#include <unordered_set>
using namespace std;
 
int main()
{
    // 声明
    unordered_set<int> sample;
 
    // 插入元素
    sample.insert(1);
    sample.insert(11);
    sample.insert(111);
    sample.insert(12);
    sample.insert(13);
 
    cout << "大小为: " << sample.size();
    cout << "\nbucket_count 为: " << sample.bucket_count();
 
    cout << "\n负载系数为: " << sample.load_factor();
 
    sample.insert(2);
    sample.insert(22);
 
    cout << "\n\n大小为: " <<
        sample.size();
 
    cout << "\nbucket_count 为: " <<
        sample.bucket_count();
 
    cout << "\n负载系数为: " <<
        sample.load_factor();
 
    sample.insert(33);
 
    cout << "\n\n大小为: " << sample.size();
 
    cout << "\nbucket_count 为: " <<
        sample.bucket_count();
 
    cout << "\n负载系数为: " << sample.load_factor();
    return 0;
}  

输出:

大小为: 5
bucket_count 为: 7
负载系数为: 0.714286

大小为: 7
bucket_count 为: 17
负载系数为: 0.411765

大小为: 8
bucket_count 为: 17
负载系数为: 0.470588

程序2 :

// C++程序,演示unordered_set::load_factor()函数
#include <iostream>
#include <unordered_set>
using namespace std;
 
int main()
{
 
    // 声明unordered_set
    unordered_set<char> sample;
 
    // 插入元素
    sample.insert('a');
    sample.insert('b');
    sample.insert('c');
    sample.insert('r');
    sample.insert('d');
 
    cout << "大小为: " << sample.size();
    cout << "\n桶个数为: "
        << sample.bucket_count();
 
    cout << "\n负载因子为: "
        << sample.load_factor();
 
    sample.insert('f');
    sample.insert('k');
 
    cout << "\n\n大小为: "
        << sample.size();
 
    cout << "\n桶个数为: "
        << sample.bucket_count();
 
    cout << "\n负载因子为: "
        << sample.load_factor();
 
    sample.insert('z');
 
    cout << "\n\n大小为: "
        << sample.size();
 
    cout << "\n桶个数为: "
        << sample.bucket_count();
 
    cout << "\n负载因子为: "
        << sample.load_factor();
    return 0;
}  

输出:

大小为: 5
桶个数为: 7
负载因子为: 0.714286

大小为: 7
桶个数为: 17
负载因子为: 0.411765

大小为: 8
桶个数为: 17
负载因子为: 0.470588

时间复杂度为: O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程