C++ Unordered_multimap::get_allocator() Function



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

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

Syntax

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

allocator_type get_allocator() const;

Parameters

This function does not accepts any parameters.

Return value

This function returns an allocator associated with unordered_multimap.

Example 1

In the following example, let's see the usage of unordered_multimap::get_allocator() function.

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

Output

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

Allocated size = 40

Example 2

Let's look at the following example, where we are going to create an object of unordered_multimap and an object of allocator type and comparing the allocator with Pair<char, int>.

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

Output

Following is the output of the above code −

Is allocator Pair<char, int> : true

Example 3

Considering the another scenario, where we are going to use the get_allocator() function.

#include <unordered_map>
#include <iostream>
using namespace std;
typedef unordered_multimap<char, int> Mymap;
typedef allocator<pair<const char, int> > Myalloc;
int main() {
   Mymap obj;
   Mymap::allocator_type al = obj.get_allocator();
   cout << "al == std::allocator() is "<< std::boolalpha << (al == Myalloc()) << std::endl;
   return (0);
}

Output

Output of the above code is as follows −

al == std::allocator() is true
Advertisements