C++ Unordered_map::max_size() Function



The C++std::unordered_map::max_size() function is used to return the maximum number of elements that can be held by unordered_map or container. This number depends on the system or library implementation.

When we use the max_size() function in the same programwith different unordered_maps or empty unordered_maps, we get the same maximum size of the unordered map container.

Syntax

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

size_type max_size() const;

Parameters

This function does not accepts any parameter.

Return value

This function returns an unsigned integer, which is the maximum number of elements that can be held by unordered_map.

Example 1

Let's look at the following example, where we are going to demonstrate the usage of max_size()function.

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

Output

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

max_size of unordered_map = 576460752303423487

Example 2

In the following example, we are going to perform a insertion on a empty map and observing the output before and after inserting the element.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um;
   cout << "max_size of unordered_map = " << um.max_size() << endl;
   um.insert({{'A', 2}, {'B', 5}, {'C', 6}, {'D', 10}});
   cout<<"*** Maximum size of unordered map after inserting the element to it ***"<<endl;
   cout << "max_size of unordered_map = " << um.max_size() << endl;
   return 0;
}

Output

Following is the output of the above code −

max_size of unordered_map = 576460752303423487
*** Maximum size of unordered map after inserting the element to it ***
max_size of unordered_map = 576460752303423487

Example 3

Consider the following example, where we are going to consider the maps of two different sizes and checking if the maximum size of both containers are same or different.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<int, int> uMap;
   unordered_map<int, int> um;
   cout << "max_size of unordered_map = " << uMap.max_size() << endl;
   cout << "max_size of unordered_map = " << um.max_size() << endl;
   uMap.insert({{1, 2}, {2, 5}, {3, 6}, {4, 10}});
   um.insert({{2, 2}, {3, 5}, {5, 6}, {6, 10}});
   cout<<"*** Maximum size of unordered map after inserting the element to it ***"<<endl;
   cout << "max_size of unordered_map = " << uMap.max_size() << endl;
   cout << "max_size of unordered_map = " << um.max_size() << endl;
   return 0;
}

Output

Output of the above code is as follows −

max_size of unordered_map = 576460752303423487
max_size of unordered_map = 576460752303423487
*** Maximum size of unordered map after inserting the element to it ***
max_size of unordered_map = 576460752303423487
max_size of unordered_map = 576460752303423487