was bedeutet Allokator in STL

8

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?

    
new 25.07.2010, 22:00
quelle

2 Antworten

11

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:

%Vor%

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.

    
GManNickG 25.07.2010, 22:04
quelle
2

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.

    
user401947 26.07.2010 07:28
quelle

Tags und Links