Allocators are objects responsible for encapsulating memory management. std::allocator is used when you want to separate allocation and do construction in two steps. It is also used when separate destruction and deallocation is done in two steps.
All the STL containers in C++ have a type parameter Allocator that is by default std::allocator. The default allocator simply uses the operators new and delete to obtain and release memory.
template <class T> class allocator;
Member functions associated with std::allocator() :
- address: It is used for obtaining the address of an object although it is removed in C++20.
- construct: It is used to construct an object.It is also removed in C++20.
- destroy: It is used to destruct an object in allocated storage.It is also removed in C++20.
- max_size: It returns the largest supported allocation size.It is deprecated in C++17 and removed in
- allocate: Used for allocation of memory.
- deallocate: Used for deallocation of memory.
Below programs illustrate the above mentioned function:
Advantage of using std::allocator
- allocator is the memory allocator for the STL containers. This container can separate the memory allocation and de-allocation from the initialization and destruction of their elements. Therefore, a call of vec.reserve(n) of a vector vec allocates only memory for at least n elements. The constructor for each element will not be executed.
- allocator can be adjusted according to the container of your need, for example, vector where you only want to allocate occasionally.
- On the contrary, new doesn’t allow to have control over which constructors are called and simply construct all objects at the same time. That’s an advantage of std:: allocator over new
Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.
- Pointers in C/C++ with Examples
- strtok() and strtok_r() functions in C with examples
- memset() in C with examples
- std::mismatch() with examples in C++
- wcscpy() function in C++ with Examples
- wcscmp() function in C++ with Examples
- set_symmetric_difference in C++ with Examples
- ratio_equal() in C++ with examples
- std::equal_to in C++ with Examples
- quick_exit() function in C++ with Examples
- feclearexcept in C++ with Examples
- Understanding Lvalues, PRvalues and Xvalues in C/C++ with Examples
- multiset lower_bound() in C++ STL with Examples
- multiset max_size() in C++ STL with Examples
- forward_list max_size() in C++ STL with Examples
- array data() in C++ STL with Examples
- multiset size() in C++ STL with Examples
- ratio_not_equal() in C++ with examples
- std::bit_or in C++ with Examples
- iswprint() in C/C++ with Examples
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : rubeennsp