C++ unordered_set::bucket_count() 函式



C++ 的 unordered_set::bucket_count() 函式用於返回 unordered_set 容器中桶的數量。桶是容器內部雜湊表中的一個槽,元素根據其鍵的雜湊值分配到該槽中。它們的編號範圍從 0 到 bucket_count - 1。

語法

以下是 std::unordered_set::bucket_count() 函式的語法。

size_type bucket_count() const noexcept;

引數

此函式不接受任何引數。

返回值

此函式返回 unordered_set 中存在的桶的總數。

示例 1

讓我們看下面的例子,我們將演示 unordered_set::bucket_count() 函式的使用。

#include <iostream>
#include <unordered_set>
using namespace std;
int main(void){
   unordered_set<char> uSet = {'a', 'b', 'c', 'd'};
   cout << "Number of buckets = " << uSet.bucket_count() << endl;
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Number of buckets = 13

示例 2

考慮下面的例子,我們將使用 unordered_set::bucket_count() 函式獲取桶的總數以及專案的數量。

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main () {
   unordered_set<string> uSet = {"Aman","Garav", "Sunil", "Roja", "Revathi"};
   unsigned n = uSet.bucket_count();
   cout << "uSet has " << n << " buckets. \n";

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

輸出

以下是以上程式碼的輸出:

uSet has 13 buckets. 
bucket #0 contains: 
bucket #1 contains: 
bucket #2 contains: 
bucket #3 contains: 
bucket #4 contains: 
bucket #5 contains: [Roja] [Garav] 
bucket #6 contains: 
bucket #7 contains: 
bucket #8 contains: [Aman] 
bucket #9 contains: 
bucket #10 contains: [Revathi] 
bucket #11 contains: 
bucket #12 contains: [Sunil] 

示例 3

在下面的示例中,我們將計算桶的數量,並使用 buckets_size() 計算每個桶中的元素數量。

#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
   unordered_set<char> uSet;
   uSet.insert({'a', 'b', 'c', 'd', 'e'});
   
   int n = uSet.bucket_count();
   cout << "uSet has " <<  n <<  " buckets.\n\n";
   
   for (int i = 0; i < n; i++) {
      if(uSet.bucket_size(i)>0)
         cout <<  "Bucket " <<  i <<  " has "<<  uSet.bucket_size(i) <<  " elements.\n";
   }
   return 0;
}

輸出

以上程式碼的輸出如下:

uSet has 13 buckets.

Bucket 6 has 1 elements.
Bucket 7 has 1 elements.
Bucket 8 has 1 elements.
Bucket 9 has 1 elements.
Bucket 10 has 1 elements.
廣告