📅  最后修改于: 2023-12-03 14:39:52.776000             🧑  作者: Mango
max_load_factor()
是 C++ STL 中 unordered_set
的一个成员函数,用于获取或设置 unordered_set
的最大负载因子。负载因子是指哈希表中元素的数量与桶的数量之比,当负载因子过高时,哈希表的性能会下降。
该函数的原型为:
float max_load_factor() const;
void max_load_factor(float ml);
当创建 unordered_set
对象时,如果没有提供 max_load_factor
参数,则默认的最大负载因子为 1.0。
下面的代码片段演示了如何在 unordered_set
中使用 max_load_factor()
来控制负载因子。
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> myset = {1, 2, 3, 4, 5};
// 获取当前最大负载因子
std::cout << "Current max_load_factor is " << myset.max_load_factor() << std::endl;
// 设置最大负载因子
myset.max_load_factor(0.5);
std::cout << "New max_load_factor is " << myset.max_load_factor() << std::endl;
// 插入元素,自动扩容
myset.insert(6);
// 根据负载因子重新分配桶
myset.rehash(6);
return 0;
}
输出:
Current max_load_factor is 1
New max_load_factor is 0.5
max_load_factor()
返回的值是一个浮点数,表示当前的最大负载因子。当设置最大负载因子时,也需要传入一个浮点数。unordered_set
的负载因子超过了最大负载因子,那么 unordered_set
将自动扩容,重新分配桶的数量。max_load_factor()
时,如果新的最大负载因子小于等于当前的负载因子,则不会使 unordered_set
重新分配桶的数量,而是当下一次插入元素时根据负载因子重新分配桶的数量。如果新的最大负载因子大于当前的负载因子,则 unordered_set
会根据新的最大负载因子重新分配桶的数量。