Ja. Ein allocator
ist eine Möglichkeit, die Zuweisung von Speicher aus der Verwendung von Speicher zu berücksichtigen. Wenn ein Container etwas Speicher benötigt, statt:
// too rigid, cannot allow custom allocation schemes
void* mem = ::operator new(someAmount);
Sie erhalten:
// flexible, allows custom allocation schemes
void* mem = myallocator.allocate(someAmount);
Es ist ein Standard-Allocator, std::allocator
, die globale operator new
und operator delete
verwendet.
Sie möchten Ihren eigenen Zuweiser jederzeit verwenden, wenn Sie ihn in einer bestimmten Weise zuordnen müssen. Diese Fälle können sein: Speicher von einer Freelist abholen, vom Stack zuweisen, usw. (Im Allgemeinen zu Optimierungszwecken, obwohl Sie auch Statistiken mit einem benutzerdefinierten Zuordner aufzeichnen könnten). Der Standardzuordner funktioniert meistens perfekt.