Sì. Un allocator
è un modo per considerare l'allocazione della memoria dall'uso della memoria. Se un contenitore ha bisogno di un po 'di memoria, invece di:
// too rigid, cannot allow custom allocation schemes
void* mem = ::operator new(someAmount);
Si ottiene:
// flexible, allows custom allocation schemes
void* mem = myallocator.allocate(someAmount);
C'è un allocatore standard std::allocator
, che utilizza globale operator new
e operator delete
.
Si desidera utilizzare il proprio allocatore ogni volta che è necessario assegnare in modo speciale. Questi casi possono essere: recuperare memoria da qualche elenco gratuito, allocare dallo stack, ecc. (Generalmente per scopi di ottimizzazione, sebbene sia possibile anche registrare statistiche con un allocatore personalizzato) La maggior parte delle volte, l'allocatore standard funziona perfettamente.