C++ STL中的unordered_map max_load_factor
C++ STL中的unordered_map::max_load_factor是一个内置函数,用于获取和设置unordered_map中的最大负载因子。负载因子是容器中元素数和桶数之间的比率。默认情况下,unordered_map的最大负载因子是1.0。
语法: 有两种类型的max_load_factor函数。
- float max_load_factor()
 - void max_load_factor(float new_size)
 
返回类型:只有第一种版本返回max_load_factor。
参数:只有第二个版本接受新大小。
注意:
- 第一种版本返回最大负载因子。
 - 第二种版本设置新负载因子。
 
示例1
// C++程序演示unordered_map::max_bucket_count函数
 #include <bits/stdc++.h>
 using namespace std;
  
 int main()
 {
   
     //声明unordered_map
     unordered_map<char,int>sample;
   
     //插入元素
     sample.insert({'a',10});
     sample.insert({'b',10});
     sample.insert({'c',10});
     sample.insert({'d',10});
     sample.insert({'e',10});
     sample.insert({'f',10});
   
     cout <<“当前大小为:”<<sample.size()<<endl;
     cout <<“当前负载系数为:”<<sample.load_factor()<<endl;
     cout <<“当前最大负载系数为”<<sample.max_load_factor()<<endl;
   
     //更改最大负载系数
     sample.max_load_factor(5.0/2.0);
     cout <<“当前大小为:”<<sample.size()<<endl;
     cout <<“当前负载系数为:”<<sample.load_factor()<<endl;
     cout <<“当前最大负载系数为”<<sample.max_load_factor()<<endl;
     return 0;
 }
当前大小为:6
当前负载系数为:0.857143
当前最大负载系数为1
当前大小为:6
当前负载系数为:0.857143
当前最大负载系数为2.5
示例2
// C++程序演示unordered_map::max_bucket_count函数
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    //声明unordered_map
    unordered_map<int,int>sample;
  
    //插入元素
    sample.insert({1,10});
    sample.insert({2,10});
    sample.insert({3,10});
    sample.insert({4,10});
  
    cout <<“当前大小为:”<<sample.size()<<endl;
    cout <<“当前负载系数为:”<<sample.load_factor() <<endl;
    cout <<“当前最大负载系数为”<<sample.max_load_factor()<<endl;
  
    //更改最大负载系数
    sample.max_load_factor(5.0/2.0);
    cout <<“当前大小为:”<<sample.size()<<endl;
    cout <<“当前负载系数为:”<<sample.load_factor()<<endl;
    cout <<“当前最大负载系数为”<<sample.max_load_factor()<<endl;
    return 0;
}
当前大小为:4
当前负载系数为:0.571429
当前最大负载系数为1
当前大小为:4
当前负载系数为:0.571429
当前最大负载系数为2.5
复杂度:O(1)。
极客教程