Namespaces
Variants

std:: allocator_traits

From cppreference.net
Memory management library
( exposition only* )
Allocators
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)
Défini dans l'en-tête <memory>
template < class Alloc >
struct allocator_traits ;
(depuis C++11)

La classe template allocator_traits fournit le moyen standardisé d'accéder aux différentes propriétés des Allocator s . Les conteneurs standards et autres composants de la bibliothèque standard accèdent aux allocateurs via ce template.

Il est possible d'utiliser n'importe quel type de classe comme allocateur, tant que la spécialisation fournie par l'utilisateur de std::allocator_traits implémente toutes les fonctionnalités requises.

(until C++23)

Un programme qui déclare une spécialisation explicite ou partielle de std::allocator_traits est mal formé, aucun diagnostic requis.

(since C++23)

Le défaut, non spécialisé, std::allocator_traits contient les membres suivants :

Table des matières

Types membres

Type Définition
allocator_type Alloc
value_type Alloc::value_type
pointer Alloc::pointer si présent, sinon value_type*
const_pointer Alloc::const_pointer si présent, sinon std:: pointer_traits < pointer > :: rebind < const value_type >
void_pointer Alloc::void_pointer si présent, sinon std:: pointer_traits < pointer > :: rebind < void >
const_void_pointer Alloc::const_void_pointer si présent, sinon std:: pointer_traits < pointer > :: rebind < const void >
difference_type Alloc::difference_type si présent, sinon std:: pointer_traits < pointer > :: difference_type
size_type Alloc::size_type si présent, sinon std:: make_unsigned < difference_type > :: type
propagate_on_container_copy_assignment Alloc::propagate_on_container_copy_assignment si présent, sinon std::false_type
propagate_on_container_move_assignment Alloc::propagate_on_container_move_assignment si présent, sinon std::false_type
propagate_on_container_swap Alloc::propagate_on_container_swap si présent, sinon std::false_type
is_always_equal Alloc::is_always_equal si présent, sinon std:: is_empty < Alloc > :: type

Modèles d'alias de membre

Type Définition
rebind_alloc<T> Alloc::rebind<T>::other si présent, sinon SomeAllocator<T, Args> si cet Alloc est de la forme SomeAllocator < U, Args > , où Args est zéro ou plusieurs arguments de type
rebind_traits<T> std :: allocator_traits < rebind_alloc < T >>

Fonctions membres

[static]
alloue de la mémoire non initialisée en utilisant l'allocateur
(fonction membre statique publique)
[static] (C++23)
alloue une mémoire d'au moins la taille demandée via un allocateur
(fonction membre statique publique)
[static]
libère la mémoire en utilisant l'allocateur
(fonction membre statique publique)
[static]
construit un objet dans la mémoire allouée
(modèle de fonction)
[static]
détruit un objet stocké dans la mémoire allouée
(modèle de fonction)
[static]
retourne la taille maximale d'objet supportée par l'allocateur
(fonction membre statique publique)
obtient l'allocateur à utiliser après la copie d'un conteneur standard
(fonction membre statique publique)

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement tel que publié Comportement corrigé
LWG 2108 C++11 il n'existait aucun moyen de montrer qu'un allocateur est sans état is_always_equal fourni

Voir aussi

conteneur utilisant un allocateur ; utilisation des traits associés (par ex. propagate_on_container_swap )
(exigence nommée)
l'allocateur par défaut
(modèle de classe)
implémente un allocateur multi-niveaux pour les conteneurs multi-niveaux
(modèle de classe)
fournit des informations sur les types de type pointeur
(modèle de classe)