std::pmr:: polymorphic_allocator
|
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) |
|
(C++20)
|
allokiert rohen ausgerichteten Speicher von der zugrunde liegenden Ressource
(öffentliche Elementfunktion) |
|
(C++20)
|
gibt rohen Speicher frei, der von
allocate_bytes
erhalten wurde
(öffentliche Elementfunktion) |
|
(C++20)
|
allokiert rohen Speicher für ein Objekt oder ein Array
(öffentliche Elementfunktion) |
|
(C++20)
|
gibt rohen Speicher frei, der von
allocate_object
erhalten wurde
(öffentliche Elementfunktion) |
|
(C++20)
|
allokiert und konstruiert ein Objekt
(öffentliche Elementfunktion) |
|
(C++20)
|
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
|
(C++17)
|
Eine abstrakte Schnittstelle für Klassen, die Speicherressourcen kapseln
(Klasse) |