std::pmr:: polymorphic_allocator
|
Défini dans l'en-tête
<memory_resource>
|
||
|
template
<
class
T
>
class polymorphic_allocator ; |
(depuis C++17)
(jusqu'à C++20) |
|
|
template
<
class
T
=
std::
byte
>
class polymorphic_allocator ; |
(depuis C++20) | |
Le modèle de classe
std::pmr::polymorphic_allocator
est un
Allocateur
qui présente un comportement d'allocation différent selon la
std::pmr::memory_resource
à partir de laquelle il est construit. Étant donné que
memory_resource
utilise le polymorphisme à l'exécution pour gérer les allocations, différentes instances de conteneurs avec
polymorphic_allocator
comme type d'allocateur statique sont interopérables, mais peuvent se comporter comme si elles avaient des types d'allocateur différents.
Toutes les spécialisations de
polymorphic_allocator
satisfont aux
exigences de complétude d'allocateur
.
La fonction membre
polymorphic_allocator::construct
effectue une
construction uses-allocator
, de sorte que les éléments d'un conteneur utilisant un
polymorphic_allocator
utiliseront ce même allocateur pour leurs propres allocations. Par exemple, un
std::
pmr
::
vector
<
std::
pmr
::
string
>
utilisera la même
memory_resource
pour le stockage du
vector
et pour le stockage de chaque
string
.
Pour les allocateurs non-polymorphiques, une propagation similaire peut être obtenue à l'aide de std::scoped_allocator_adaptor .
Table des matières |
Types membres
| Type de membre | Définition |
value_type
|
T
|
Fonctions membres
construit un
polymorphic_allocator
(fonction membre publique) |
|
|
(destructeur)
(déclaré implicitement)
|
destructeur déclaré implicitement
(fonction membre publique) |
|
operator=
[supprimé]
|
opérateur d'affectation par copie supprimé
(fonction membre publique) |
Fonctions membres publiques |
|
|
alloue de la mémoire
(fonction membre publique) |
|
|
désalloue de la mémoire
(fonction membre publique) |
|
|
construit un objet dans le stockage alloué
(fonction membre publique) |
|
|
(obsolète en C++20)
(réhabilité en C++26)
|
détruit un objet dans le stockage alloué
(fonction membre publique) |
|
(C++20)
|
alloue de la mémoire brute alignée depuis la ressource sous-jacente
(fonction membre publique) |
|
(C++20)
|
libère la mémoire brute obtenue depuis
allocate_bytes
(fonction membre publique) |
|
(C++20)
|
alloue de la mémoire brute adaptée pour un objet ou un tableau
(fonction membre publique) |
|
(C++20)
|
libère la mémoire brute obtenue par
allocate_object
(fonction membre publique) |
|
(C++20)
|
alloue et construit un objet
(fonction membre publique) |
|
(C++20)
|
détruit et désalloue un objet
(fonction membre publique) |
crée un nouveau
polymorphic_allocator
pour utilisation par le constructeur de copie d'un conteneur
(fonction membre publique) |
|
|
retourne un pointeur vers la ressource mémoire sous-jacente
(fonction membre publique) |
|
Fonctions non membres
|
(supprimé en C++20)
|
comparer deux
polymorphic_allocator
s
(fonction) |
Notes
polymorphic_allocator
ne se propage pas lors de l'affectation par copie, l'affectation par déplacement ou l'échange de conteneurs. En conséquence, l'affectation par déplacement d'un conteneur utilisant
polymorphic_allocator
peut lever une exception, et l'échange de deux conteneurs utilisant
polymorphic_allocator
dont les allocateurs ne sont pas égaux entraîne un comportement indéfini.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_polymorphic_allocator
|
201902L
|
(C++20) |
std::pmr::polymorphic_allocator<>
en tant que type de vocabulaire
|
Voir aussi
|
(C++17)
|
une interface abstraite pour les classes qui encapsulent les ressources mémoire
(classe) |