C++ STL中unordered_multimap load_factor()函数

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程