std::
unordered_multiset::max_load_factor
公众成员函数 <unordered_set>
get(1) |
float max_load_factor() const noexcept;
|
set(2) |
void max_load_factor ( float z );
|
获取或设置存储桶最大的负载系数
第一个版本(1)返回
unordered_multiset容器的当前最大负载系数。
第二个版本(2)将
z设置为
unordered_multiset容器的新的最大负载系数。
负载系数是容器中元素的数量(其大小)与桶的数量(bucket_count)之间的比率。
默认情况下,
unordered_multiset容器的
max_load_factor为
1.0。
负载系数影响哈希表中发生碰撞的概率(即两个元素位于同一个
bucket中的概率)。
容器使用
max_load_factor的值作为阈值,强制增加桶的数量(从而导致
rehash)。
☲ 参数
-
z
-
新的最大负载系数.
☉ 返回值
返回当前的负载系数(仅适用于第一个版本).
☣ 示例
// unordered_multiset::max_load_factor
#include <iostream>
#include <string>
#include <unordered_set>
int main ()
{
std::unordered_multiset<std::string> myums =
{"human","klingon","vulcan","vulcan","andorian","vulcan"};
std::cout << "current max_load_factor: " << myums.max_load_factor() << std::endl;
std::cout << "current size: " << myums.size() << std::endl;
std::cout << "current bucket_count: " << myums.bucket_count() << std::endl;
std::cout << "current load_factor: " << myums.load_factor() << std::endl;
float z = myums.max_load_factor();
myums.max_load_factor ( z / 2.0 );
std::cout << "[max_load_factor halved]" << std::endl;
std::cout << "new max_load_factor: " << myums.max_load_factor() << std::endl;
std::cout << "new size: " << myums.size() << std::endl;
std::cout << "new bucket_count: " << myums.bucket_count() << std::endl;
std::cout << "new load_factor: " << myums.load_factor() << std::endl;
return 0;
}
|
可能输出:
current max_load_factor: 1
current size: 6
current bucket_count: 7
current load_factor: 0.857143
[max_load_factor halved]
new max_load_factor: 0.5
new size: 6
new bucket_count: 13
new load_factor: 0.461538
✥ 复杂度
常量,可能会触发 rehash(不包括)。
☣ 迭代器的有效性
没有更改,除非对该值的更改强制进行重新哈希。在这种情况下,容器中的所有迭代器都失效。
如果新容器
max_load_factor设置在当前
load_factor之下,则强制进行
rehash。
对
unordered_multiset容器中的元素的引用在所有情况下仍然有效,即使在
rehash之后也是如此。
🍄 另请参阅
unordered_multiset::bucket_count |
返回存储桶的数量(公众成员函数) |
unordered_multiset::bucket_size |
返回存储桶的容量(公众成员函数) |
unordered_multiset::load_factor |
返回存储桶的元素平均数量(公众成员函数) |
unordered_multiset::size |
返回容量(公众成员函数) |