Да. allocator
- способ факторизации выделения памяти из памяти. Если контейнер необходимо некоторое количество памяти, вместо:
// too rigid, cannot allow custom allocation schemes
void* mem = ::operator new(someAmount);
Вы получаете:
// flexible, allows custom allocation schemes
void* mem = myallocator.allocate(someAmount);
Существует стандартный распределитель, std::allocator
, который использует глобальный operator new
и operator delete
.
Вы хотите использовать свой распределитель в любое время, когда вам нужно выделять особым образом. Эти случаи могут быть: получить память из какого-либо фриланса, выделить из стека и т. Д. (Как правило, для целей оптимизации, хотя вы также можете записывать статистику с помощью специального распределителя). В большинстве случаев стандартный распределитель работает отлично.