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)。