C++ multimap::get_allocator() Function



The C++ std::multimap::get_allocator() function is used to return the allocator object used by the multimap to manage memory. An allocator in C++ defines the memory model to be used for the container elements. This function provides access to the allocator, enabling operations like custom memory allocation and deallocation. The time complexity of this function is constant i.e.O(1).

Syntax

Following is the syntax for std::multimap::get_allocator() function.

allocator_type get_allocator() const noexcept;

Parameters

It does not accept any parameters.

Return value

This function returns an allocator associated with multimap.

Example

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

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, int> a;
    auto x = a.get_allocator();
    std::pair<const int, int>* y = x.allocate(3);
    std::cout << "Allocated Memory At: " << y << std::endl;
    x.deallocate(y, 3);
    return 0;
}

Output

Output of the above code is as follows −

Allocated Memory At: 0x55e143b18eb0

Example

Consider the following example, where we are going to allocate the array of elements.

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a;
    auto x = a.get_allocator();
    auto y = x.allocate(3);
    for (int i = 0; i < 3; ++i) {
        x.construct(y + i, std::pair<const int, std::string>(i, "value" + std::to_string(i)));
    }
    for (int i = 0; i < 3; ++i) {
        std::cout << (y + i)->first << " : " << (y + i)->second << std::endl;
    }
    for (int i = 0; i < 3; ++i) {
        x.destroy(y + i);
    }
    x.deallocate(y, 3);
    return 0;
}

Output

Following is the output of the above code −

0 : value0
1 : value1
2 : value2

Example

In the following example, we are going to allocate and construct the multiple elements.

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, int> a;
    auto x = a.get_allocator();
    std::pair<const int, int>* p = x.allocate(2);
    x.construct(&p[0], std::make_pair(1, 11));
    x.construct(&p[1], std::make_pair(2, 22));
    for (int i = 0; i < 2; ++i) {
        std::cout << "Element " << i << ": (" << p[i].first << ", " << p[i].second << ")" << std::endl;
    }
    for (int i = 0; i < 2; ++i) {
        x.destroy(&p[i]);
    }
    x.deallocate(p, 3);
    return 0;
}

Output

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

Element 0: (1, 11)
Element 1: (2, 22)
multimap.htm
Advertisements