Namespaces
Variants

std::pmr:: polymorphic_allocator

From cppreference.net
Memory management library
( exposition only* )
Allocators
pmr::polymorphic_allocator
(C++17)
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definiert im Header <memory_resource>
template < class T >
class polymorphic_allocator ;
(seit C++17)
(bis C++20)
template < class T = std:: byte >
class polymorphic_allocator ;
(seit C++20)

Die Klassenvorlage std::pmr::polymorphic_allocator ist ein Allocator , der unterschiedliches Allokationsverhalten zeigt, abhängig von der std::pmr::memory_resource , aus der sie konstruiert wurde. Da memory_resource Laufzeitpolymorphie zur Verwaltung von Allokationen verwendet, sind verschiedene Containerinstanzen mit polymorphic_allocator als ihrem statischen Allokatortyp interoperabel, können sich jedoch so verhalten, als hätten sie unterschiedliche Allokatortypen.

Alle Spezialisierungen von polymorphic_allocator erfüllen die Allokator-Vollständigkeitsanforderungen .

Die polymorphic_allocator::construct -Memberfunktion führt Uses-allocator-Konstruktion durch, sodass die Elemente eines Containers, der einen polymorphic_allocator verwendet, denselben Allokator für ihre eigenen Allokationen nutzen. Beispielsweise wird ein std:: pmr :: vector < std:: pmr :: string > dieselbe memory_resource für den Speicher des vector und den Speicher jedes string verwenden.

Für nicht-polymorphe Allokatoren kann eine ähnliche Verbreitung mit Hilfe von std::scoped_allocator_adaptor erreicht werden.

Inhaltsverzeichnis

Mitgliedertypen

Mitgliedertyp Definition
value_type T

Memberfunktionen

konstruiert einen polymorphic_allocator
(öffentliche Elementfunktion)
(Destruktor)
(implizit deklariert)
implizit deklarierter Destruktor
(öffentliche Elementfunktion)
operator=
[gelöscht]
Zuweisungsoperator ist gelöscht
(öffentliche Elementfunktion)
Öffentliche Elementfunktionen
Speicher allozieren
(öffentliche Elementfunktion)
Speicher freigeben
(öffentliche Elementfunktion)
konstruiert ein Objekt im allokierten Speicher
(öffentliche Elementfunktion)
(veraltet in C++20) (reaktiviert in C++26)
zerstört ein Objekt im allokierten Speicher
(öffentliche Elementfunktion)
allokiert rohen ausgerichteten Speicher von der zugrunde liegenden Ressource
(öffentliche Elementfunktion)
gibt rohen Speicher frei, der von allocate_bytes erhalten wurde
(öffentliche Elementfunktion)
allokiert rohen Speicher für ein Objekt oder ein Array
(öffentliche Elementfunktion)
gibt rohen Speicher frei, der von allocate_object erhalten wurde
(öffentliche Elementfunktion)
(C++20)
allokiert und konstruiert ein Objekt
(öffentliche Elementfunktion)
zerstört und gibt ein Objekt frei
(öffentliche Elementfunktion)
erstellt einen neuen polymorphic_allocator für die Verwendung durch den Kopierkonstruktor eines Containers
(öffentliche Elementfunktion)
gibt einen Zeiger auf die zugrunde liegende Speicherressource zurück
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

(entfernt in C++20)
vergleiche zwei polymorphic_allocator s
(Funktion)

Hinweise

polymorphic_allocator pflanzt sich bei Container-Kopierzuweisung, Verschiebezuweisung oder Swap nicht fort. Infolgedessen kann die Verschiebezuweisung eines Containers, der polymorphic_allocator verwendet, eine Ausnahme auslösen, und das Vertauschen zweier Container, die polymorphic_allocator verwenden und deren Allokatoren nicht gleich sind, führt zu undefiniertem Verhalten.

Feature-Test Makro Wert Std Feature
__cpp_lib_polymorphic_allocator 201902L (C++20) std::pmr::polymorphic_allocator<> als Vokabular-Typ

Siehe auch

Eine abstrakte Schnittstelle für Klassen, die Speicherressourcen kapseln
(Klasse)