C++ unordered_map::max_bucket_count() 函式



C++ 的std::unordered_map::max_bucket_count()函式用於返回unordered_map容器根據其當前記憶體分配可以容納的最大桶數。unordered_map中的每個桶都是一個容器,用於儲存具有相同雜湊值的元素。

桶是容器內部雜湊表中的一個槽,元素根據其鍵的雜湊值分配到該槽中。容器中桶的實際數量始終小於max_bucket_count()函式返回的最大數量。

語法

以下是std::unordered_map::max_bucket_count()函式的語法。

size_type max_bucket_count() const;

引數

此函式不接受任何引數。

返回值

此函式返回一個無符號整數,表示最大桶數。

示例 1

讓我們看下面的例子,我們將建立一個包含零個元素的對映並應用max_bucket_count()並觀察輸出。

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

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

max_bucket_count of unordered_map = 1152921504606846975

示例 2

在下面的示例中,我們將建立一個包含三個元素的對映並應用max_bucket_count()函式。

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

輸出

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

max_bucket_count of unordered_map = 576460752303423487

示例 3

以下是一個示例,我們使用儲存負值的對映並應用mac_bucket_count()函式。

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

輸出

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

max_bucket_count of unordered_map = 576460752303423487

示例 4

考慮以下示例,我們將考慮空對映並比較在將元素插入對映後最大桶數是否相等。

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

輸出

上述程式碼的輸出如下:

Size is : 0
Max bucket count is : 576460752303423487
Size is : 5
Max bucket count is : 576460752303423487
廣告