C++ Memory Library - allocator


Advertisements


Description

It defines the memory models to be used by some parts of the Standard Library, and most specifically, by STL containers.

Declaration

Following is the declaration for std::allocator function.

template <class T> class allocator;

C++11

template <class T> class allocator;

Parameters

T − It contains information about types of elements.

Member types

Type Definition
value_type T
pointer (deprecated in C++17) T*
const_pointer (deprecated in C++17) const T*
reference (deprecated in C++17) T&
const_reference (deprecated in C++17) const T&
size_type (deprecated in C++17) std::size_t
difference_type(deprecated in C++17) std::ptrdiff_t
propagate_on_container_move_assignment (C++14) std::true_type
rebind (deprecated in C++17) template<class U >struct rebind { typedef allocator<U>other;};
is_always_equal(C++17) std::true_type

Example

In below example explains about std::allocator function.

Live Demo
#include <memory>
#include <iostream>
#include <string>

int main() {
   std::allocator<int> a1;
   int* a = a1.allocate(10);

   a[9] = 7;

   std::cout << a[9] << '\n';

   a1.deallocate(a, 10);

   std::allocator<std::string> a2;

   decltype(a1)::rebind<std::string>::other a2_1;

   std::allocator_traits<decltype(a1)>::rebind_alloc<std::string> a2_2;

   std::string* s = a2.allocate(2);

   a2.construct(s, "foo");
   a2.construct(s + 1, "bar");

   std::cout << s[0] << ' ' << s[1] << '\n';
 
   a2.destroy(s);
   a2.destroy(s + 1);
   a2.deallocate(s, 2);
}

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

7
foo bar

memory.htm

Advertisements