C++ unordered_multimap::max_bucket_count() 函数



C++ 的std::unordered_multimap::max_bucket_count() 函数用于返回 unordered_multimap 容器根据其当前内存分配可以容纳的最大桶数。unordered_multimap 中的每个桶都是一个容器,它保存具有相同哈希值的元素。

桶是容器内部哈希表中的一个槽,元素根据其键的哈希值分配到该槽。

语法

以下是 std::unordered_multimap::max_bucket_count() 函数的语法。

size_type max_bucket_count() const;

参数

此函数不接受任何参数。

返回值

此函数返回一个无符号整数,表示最大桶数。

示例 1

让我们看下面的例子,我们将对空 multimap 使用 max_bucket_count() 函数并观察输出。

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_multimap<char, int> um;
   cout << "max_bucket_count of unordered_multimap = " << um.max_bucket_count() << endl;
   return 0;
}

输出

让我们编译并运行以上程序,这将产生以下结果:

max_bucket_count of unordered_multimap = 576460752303423487

示例 2

考虑另一种情况,我们将使用 max_bucket_count 获取当前 multimap 中的最大桶数。

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_multimap<char, int> umm={{'A', 1}, {'B', 2}, {'A', 3}, {'B', 4}, {'C', 5}};
   cout << "max_bucket_count of unordered_multimap = " << umm.max_bucket_count() << endl;
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

max_bucket_count of unordered_multimap = 576460752303423487

示例 3

在下面的示例中,我们创建了一个存储负键值的 unordered_multimap,然后使用max_bucket_count获取最大桶数,如下所示:

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_multimap<int, char> umm={{-1, 'a'}, {-2, 'b'}, {-3, 'c'}, {-2, 'd'}, {-3, 'e'}};
   cout << "max_bucket_count of unordered_multimap = " << umm.max_bucket_count() << endl;
   return 0;
}

输出

以下是以上代码的输出:

max_bucket_count of unordered_multimap = 576460752303423487

示例 4

在下面的示例中,我们将获取在将元素插入空 multimap 之前和之后的最大桶数。

#include <iostream>
#include <unordered_map>
using namespace std;
  
int main() {
   unordered_multimap<char, int> ummap;  
   cout << "Size is : " << ummap.size() << endl;
   cout << "Max bucket count is : " << ummap.max_bucket_count() << endl;
	
   // insert elements
   ummap.insert({ 'a', 10 });
   ummap.insert({ 'b', 12 });
   ummap.insert({ 'c', 13 });
   ummap.insert({ 'b', 12 });
   ummap.insert({ 'd', 15 });
   ummap.insert({ 'e', 20 });
  
   cout << "Size is : " << ummap.size() << endl;
   cout << "Max bucket count is : " << ummap.max_bucket_count() << endl;
   return 0;
}

输出

以上代码的输出如下:

Size is : 0
Max bucket count is : 576460752303423487
Size is : 6
Max bucket count is : 576460752303423487
广告