C++ Unordered_map::get_allocator() Function



The C++ std::unordered_map::get_allocator() function is used to obtain a copy of an allocator associated with the unordered_map. The allocator is responsible for allocating and deallocating memory for the element stored in the unordered map.

This function does not modify the unordered_map and does not throw any exceptions.

Syntax

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

allocator_type get_allocator() const;

Parameters

This function does not accepts any parameter

Return value

This function returns an allocator object.

Example 1

In this following example, we are demonstrating the usage of the get_allocator() function.

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um;
   pair<const char, int> *p;
   p = um.get_allocator().allocate(5);
   cout << "Allocated size = " <<  sizeof(*p) * 5 << endl;
   return 0;
}

Output

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

Allocated size = 40

Example 2

Consider the following example, we declare an unordered map object and use the get_allocator() function to allocate pairs to the unordered map. If a pair is allocated, it returns true; otherwise, it returns false.

#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
   unordered_map<int, int> uMap;
   unordered_map<int, int>::allocator_type umap = uMap.get_allocator();
   cout << "Is allocator Pair<int, int> : "<< boolalpha <<(umap == allocator<pair<int, int> >());
   return 0;
}

Output

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

Is allocator Pair<int, int> : true
Advertisements