C++ STL中unordered_multimap load_factor()函数
unordered_multimap::load_factor() 是C++ STL中的内置函数,它返回unordered_multimap容器中的当前负载因子。负载因子是容器中元素数量(即大小)与桶数(bucket_count)之间的比率:
负载因子 = 大小 / 桶数
负载因子影响哈希表中碰撞的概率(即两个元素位于同一桶的概率)。容器通过在需要扩展时导致重新哈希来自动增加桶数,以使负载因子低于特定阈值(其max_load_factor)。
语法 :
unordered_multimap_name.load_factor()
参数 :该函数不接受任何参数。
返回值 :该函数返回当前负载因子。它可以是整数或双精度类型的。
以下程序说明unordered_multimap::load_factor()函数:
程序1: :
// C++ program to illustrate the
// unordered_multimap::load_factor() function
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
// 声明
unordered_multimap<int, int> sample;
// 插入元素
sample.insert({ 1, 2 });
sample.insert({ 1, 3 });
sample.insert({ 2, 4 });
sample.insert({ 5, 8 });
sample.insert({ 7, 10 });
cout << "大小为: " << sample.size();
cout << "\n桶计数为: "
<< sample.bucket_count();
cout << "\n负载因子为: "
<< sample.load_factor();
sample.insert({ 1, 1 });
sample.insert({ 9, 0 });
cout << "\n\n大小为: "
<< sample.size();
cout << "\n桶计数为: "
<< sample.bucket_count();
cout << "\n负载因子为: "
<< sample.load_factor();
sample.insert({ 1, 1 });
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
程序2: :
// C++程序演示了unordered_multimap::load_factor()
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
// 声明
unordered_multimap<char, char> sample;
// 插入元素
sample.insert({ 'a', 'b' });
sample.insert({ 'a', 'b' });
sample.insert({ 'a', 'd' });
sample.insert({ 'b', 'e' });
sample.insert({ 'b', 'd' });
cout << "大小为:" << sample.size();
cout << "\n桶容量为:"
<< sample.bucket_count();
cout << "\n负载因子为:"
<< sample.load_factor();
sample.insert({ 'b', 'k' });
sample.insert({ 'b', 'h' });
cout << "\n\n大小为:" << sample.size();
cout << "\n桶容量为:"
<< sample.bucket_count();
cout << "\n负载因子为:"
<< sample.load_factor();
sample.insert({ 'z', 'j' });
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