Ich benutze Listen-Klasse in C ++ und ich weiß nicht, was bedeutet hier Allokator
%Vor% Wenn ich list <int> mylist
hätte, würde das bedeuten, dass ein ganzzahliger Speichertyp zugewiesen wird, wenn der Zuordner verwendet wird, wenn ein Element zur Liste hinzugefügt wird? und wann möchten Sie einen benutzerdefinierten Zuordner?
Ja. Ein allocator
ist eine Möglichkeit, die Zuweisung von Speicher aus der Verwendung von Speicher zu berücksichtigen. Wenn ein Container Speicherplatz benötigt, statt:
Sie erhalten:
%Vor% Es gibt einen Standard-Allokator, std::allocator
, der global operator new
und operator delete
verwendet.
Sie möchten Ihren eigenen Zuweiser jederzeit verwenden, wenn Sie ihn auf besondere Weise zuordnen müssen. Diese Fälle können sein: Speicher aus einer Freelist holen, aus dem Stack zuteilen usw. (Im Allgemeinen zu Optimierungszwecken, obwohl Sie auch Statistiken mit einem benutzerdefinierten Zuordner aufzeichnen könnten) Die Standardzuweisung funktioniert meistens perfekt.
Zusätzlich zu dem, auf das GMan hingewiesen hat, können benutzerdefinierte Zuordner für die ausgerichtete Speicherzuweisung verwendet werden. Einige Hochleistungsbibliotheken, die den SIMD-Befehlssatz verwenden, erfordern einen ausgerichteten Speicher. Diese Bibliotheken können Ihnen einsatzbereite Zuweiser zur Verfügung stellen, die Sie in jeden STL-Container einstecken können. Es gibt auch Cache-ausgerichtete Zuordnungen, um eine falsche Freigabe in Multithread-Code zu vermeiden. Intels TBB ist mit skalierbaren Allokatoren ausgestattet, die die Multi-Thread-Speicherzuweisung beschleunigen.
Tags und Links c++