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)