Encapsulates a memory allocation and deallocation strategy.
Every standard library component that may need to allocate or release storage, from std::string, std::vector, and every container except std::array, to std::shared_ptr and std::function, does so through an Allocator: an object of a class type that satisfies the following requirements.
Some requirements are optional: the template std::allocator_traits supplies the default implementations for all optional requirements, and all standard l