C++ unordered_multimap::bucket_count() 函数



C++ 的 std::unordered_multimap::bucket_count() 函数用于返回 unordered_multimap 容器中存在的桶的总数。桶是容器内部哈希表中的一个槽,元素根据其键的哈希值分配到该槽中。它们的编号范围从 0 到 bucket_count - 1。

语法

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

size_type bucket_count() const noexcept;

参数

此函数不接受任何参数。

返回值

此函数返回 unordered_multimap 中存在的桶的总数。

示例 1

在下面的示例中,让我们看看 unordered_multimap::bucket_count() 函数的用法。

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

输出

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

Number of buckets = 7

示例 2

考虑下面的示例,我们将使用 bucket_count() 获取桶的总数和每个桶中的项目数。

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main () {
   unordered_multimap<string, string> UnorderMmap={
      {"Aman","Akash"},
      {"Gautam","Garav"},
      {"Anil","Sunil"},
      {"Raja","Roja"},
      {"Gautam","Garav"},
      {"Anil","Sunil"},
   };
   unsigned n = UnorderMmap.bucket_count();
   cout << "map has " << n << " buckets.\n";

   for (unsigned i=0; i<n; ++i) {
      cout << "bucket #" << i << " contains: ";
      for (auto it = UnorderMmap.begin(i); it!=UnorderMmap.end(i); ++it)
         cout << "[" << it->first << ":" << it->second << "] ";
      cout << "\n";
   }
   return 0;
}

输出

以下是上述代码的输出:

map has 7 buckets.
bucket #0 contains: 
bucket #1 contains: [Gautam:Garav] [Gautam:Garav] [Aman:Akash] 
bucket #2 contains: 
bucket #3 contains: 
bucket #4 contains: [Anil:Sunil] [Anil:Sunil] 
bucket #5 contains: [Raja:Roja] 
bucket #6 contains: 

示例 3

让我们来看下面的示例,我们将使用存储重复键和值的 unordered_multimap,并应用 bucket_count() 函数来获取桶的总数。

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main () {
   unordered_multimap<char, int> UnorderMmap={ {'A', 2}, {'B', 2}, {'A', 1}, {'A', 2}, {'B', 1} };
   unsigned n = UnorderMmap.bucket_count();
   cout << "unordered_multimap has total: " << n << " buckets.\n";
   return 0;
}

输出

上述代码的输出如下:

unordered_multimap has total: 5 buckets.
广告