C++ STL 中 unordered_map 的 load_factor

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程