C++ STL 中 unordered_map 的 load_factor
unordered_map::load_factor() 是 C++ STL 中的一个内置函数,用于返回unordered_map容器中当前的负载系数。负载因子是容器中元素数(其大小)与桶数(bucket_count)之间的比率:
负载因子 = 大小 / 桶数
负载因子影响哈希表中碰撞的概率(即两个元素被定位在相同的桶中的概率)。当需要扩展时,容器通过引发重新哈希来使负载因子低于特定阈值(其max_load_factor),从而自动增加桶的数量。
语法:
unordered_map_name.load_factor()
参数: 该函数不接受任何参数。
返回值: 该函数返回当前的负载系数。
示例-1:
// C++ program to illustrate the
// unordered_map::load_factor() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// declaration of unordered_map
unordered_map<int, int> sample;
// inserts element
sample.insert({ 1, 2 });
sample.insert({ 2, 4 });
sample.insert({ 5, 8 });
sample.insert({ 7, 10 });
cout << "The size is: " << sample.size();
cout << "\nThe bucket_count is: "
<< sample.bucket_count();
cout << "\nThe load_factor is: "
<< sample.load_factor();
sample.insert({ 9, 0 });
cout << "\n\nThe size is: "
<< sample.size();
cout << "\nThe bucket_count is: "
<< sample.bucket_count();
cout << "\nThe load_factor is: "
<< sample.load_factor();
sample.insert({ 11, 1 });
cout << "\n\nThe size is: "
<< sample.size();
cout << "\nThe bucket_count is: "
<< sample.bucket_count();
cout << "\nThe load_factor is: "
<< sample.load_factor();
return 0;
}
大小为 4
桶数为 7
负载因子为 0.571429
大小为 5
桶数为 7
负载因子为 0.714286
大小为 6
桶数为 7
负载因子为 0.857143
示例-2:
// C++ program to illustrate the
// unordered_map::load_factor() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// declaration of unordered_map
unordered_map<char, int> sample;
// inserts element
sample.insert({ 'a', 2 });
sample.insert({ 'b', 4 });
sample.insert({ 'c', 8 });
sample.insert({ 'd', 10 });
cout << "大小为: " << sample.size();
cout << "\n桶数为:"
<< sample.bucket_count();
cout << "\n负载因子为:"
<< sample.load_factor();
sample.insert({ 'e', 0 });
sample.insert({ 'h', 5 });
cout << "\n\n大小为:"
<< sample.size();
cout << "\n桶数为:"
<< sample.bucket_count();
cout << "\n负载因子为:"
<< sample.load_factor();
sample.insert({ 'f', 1 });
cout << "\n\n大小为:"
<< sample.size();
cout << "\n桶数为:"
<< sample.bucket_count();
cout << "\n负载因子为:"
<< sample.load_factor();
return 0;
}
大小:4
存储桶数量:7
负载系数:0.571429
大小:6
存储桶数量:7
负载系数:0.857143
大小:7
存储桶数量:17
负载系数:0.411765