C++ Unordered_map::max_bucket_count() Function



The C++ std::unordered_map::max_bucket_count() function is used to returns the maximum number of buckets that the unordered_map container can hold, based on its current memory allocation. each bucket in an unordered_map is a container that holds element with same hash value.

A bucket is a slot in the container's internal hash table to which elements are assigned based on the hash value of their key. The actual number of buckets in the container is always smaller than the maximum number returned by max_bucket_count() function.

Syntax

Following is the syntax of the std::unordered_map::max_bucket_count() function.

size_type max_bucket_count() const;

Parameters

This function does not accepts any parameter.

Return value

This function returns an unsigned integer that represent the maximum number of buckets.

Example 1

Let's look at the following example, where we are going to create a map with zero elements and applying the max_bucket_count() and observing the output.

#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;
}

Output

Let us compile and run the above program, this will produce the following result −

max_bucket_count of unordered_map = 1152921504606846975

Example 2

In the following example, we are going to create a map with three elements and appling the max_bucket_count() function.

#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;
}

Output

If we run the above code it will generate the following output −

max_bucket_count of unordered_map = 576460752303423487

Example 3

Following is the example, where we are use the map that stores the negative values and applying the mac_bucket_count() function.

#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;
}

Output

Following is the output of the above code −

max_bucket_count of unordered_map = 576460752303423487

Example 4

Consider the following example, where we are going to consider the empty map and compare the maximum bucket count is equal or not after inserting the elements into the map.

#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;
}

Output

Output of the above code is as follows −

Size is : 0
Max bucket count is : 576460752303423487
Size is : 5
Max bucket count is : 576460752303423487
Advertisements