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.
廣告