Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

unordered_multimap::max_load_factor

公众成员函数  <unordered_map>
get(1)
float max_load_factor() const noexcept;
set(2)
void max_load_factor ( float z );

获取或设置存储桶最大的负载系数

第一个版本(1)返回unordered_multimap容器的当前最大负载系数。
第二个版本(2)将z设置为unordered_multimap容器的新的最大负载系数。

负载系数是容器中元素的数量(其大小)与桶的数量(bucket_count)之间的比率。

默认情况下,unordered_multimap容器的max_load_factor1.0

负载系数影响哈希表中发生碰撞的概率(即两个元素位于同一个bucket中的概率)。 容器使用max_load_factor的值作为阈值,强制增加桶的数量(从而导致 rehash)。

请注意,实现可能会对桶的数量施加一个上限(参见max_bucket_count),这可能会迫使容器忽略max_load_factor

☲  参数


z
新的最大负载系数.

☉  返回值



返回当前的负载系数(仅适用于第一个版本).

☣  示例



// unordered_multimap::max_load_factor
#include <iostream>
#include <string>
#include <unordered_map>

int main ()
{
  std::unordered_multimap<std::string,std::string> myumm = {
    {"apple","NY"},
    {"apple","WA"},
    {"peach","GA"},
    {"cherry","UT"}
  };

  std::cout << "current max_load_factor: " << myumm.max_load_factor() << std::endl;
  std::cout << "current size: " << myumm.size() << std::endl;
  std::cout << "current bucket_count: " << myumm.bucket_count() << std::endl;
  std::cout << "current load_factor: " << myumm.load_factor() << std::endl;

  float z = myumm.max_load_factor();
  myumm.max_load_factor ( z / 2.0 );
  std::cout << "[max_load_factor halved]" << std::endl;

  std::cout << "new max_load_factor: " << myumm.max_load_factor() << std::endl;
  std::cout << "new size: " << myumm.size() << std::endl;
  std::cout << "new bucket_count: " << myumm.bucket_count() << std::endl;
  std::cout << "new load_factor: " << myumm.load_factor() << std::endl;

  return 0;
}

可能输出:
current max_load_factor: 1
current size: 4
current bucket_count: 5
current load_factor: 0.8
[max_load_factor halved]
new max_load_factor: 0.5
new size: 4
new bucket_count: 11
new load_factor: 0.363636

✥ 复杂度



常量,可能会触发 rehash(不包括)。

☣ 迭代器的有效性



没有更改,除非对该值的更改强制进行重新哈希。在这种情况下,容器中的所有迭代器都失效。

如果新容器max_load_factor设置在当前load_factor之下,则强制进行rehash

unordered_multimap容器中的元素的引用在所有情况下仍然有效,即使在rehash之后也是如此。

🍄  另请参阅



unordered_multimap::bucket_count 返回存储桶的数量(公众成员函数)
unordered_multimap::bucket_size 返回存储桶的容量(公众成员函数)
unordered_multimap::load_factor 返回存储桶的元素平均数量(公众成员函数)
unordered_multimap::size 返回容量(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图