allocator_base, classe
Définit la classe de base et les fonctions communes nécessaires à la création d’un allocateur défini par l’utilisateur à partir d’un filtre de synchronisation.
Syntaxe
template <class Type, class Sync>
class allocator_base
Paramètres
Type
Type des éléments alloués par l'allocateur.
Synchronisation
Stratégie de synchronisation de l’allocateur, qui est la classe sync_none, sync_per_container, sync_per_thread ou sync_shared.
Constructeurs
Constructeur | Description |
---|---|
allocator_base | Construit un objet de type allocator_base . |
Typedefs
Nom de type | Description |
---|---|
const_pointer | Type qui fournit un pointeur constant vers le type d'objet géré par l'allocateur. |
const_reference | Type qui fournit une référence constante au type d'objet géré par l'allocateur. |
difference_type | Type intégral signé qui peut représenter la différence entre des valeurs de pointeurs vers le type d'objet géré par l'allocateur. |
pointer | Type qui fournit un pointeur vers le type d'objet géré par l'allocateur. |
référence | Type qui fournit une référence au type d'objet géré par l'allocateur. |
size_type | Type intégral non signé qui peut représenter la longueur de n’importe quelle séquence qu’un objet de type allocator_base peut allouer. |
value_type | Type géré par l'allocateur. |
Fonctions Membre
Fonction membre | Description |
---|---|
_Charalloc | Alloue du stockage pour un tableau de type char . |
_Chardealloc | Libère du stockage pour le tableau contenant des éléments de type char . |
address | Recherche l'adresse d'un objet dont la valeur est spécifiée. |
allocate | Alloue un bloc de mémoire suffisamment grand pour stocker au moins un nombre spécifié d'éléments. |
construct | Construit un type d'objet spécifique à une adresse spécifiée qui est initialisée avec une valeur spécifiée. |
deallocate | Libère du stockage un nombre d'objets spécifié à partir d'une position spécifiée. |
destroy | Appelle un destructeur d'objets sans libérer la mémoire où l'objet était stocké. |
max_size | Retourne le nombre d’éléments de type Type qui pourraient être alloués par un objet de classe allocator avant que la mémoire libre soit complètement utilisée. |
Spécifications
Header :<allocators>
Espace de noms : stdext
allocator_base ::_Charalloc
Alloue du stockage pour un tableau de type char
.
char *_Charalloc(size_type count);
Paramètres
count
Nombre d’éléments du tableau à allouer.
Valeur de retour
Un pointeur vers l’objet alloué.
Notes
Cette fonction membre est utilisée par les conteneurs lorsqu’ils sont compilés avec un compilateur qui ne peut pas compiler de liaison. Il implémente _Charalloc
pour l’allocateur défini par l’utilisateur en retournant le résultat d’un appel à la fonction allocate
du filtre de synchronisation.
allocator_base ::_Chardealloc
Libère du stockage pour le tableau contenant des éléments de type char
.
void _Chardealloc(void* ptr, size_type count);
Paramètres
ptr
Pointeur vers le premier objet à désallouer dans le stockage.
count
Nombre d’objets à désallouer dans le stockage.
Notes
Cette fonction membre est utilisée par les conteneurs lorsqu’ils sont compilés avec un compilateur qui ne peut pas compiler de liaison. Il implémente _Chardealloc
pour l’allocateur défini par l’utilisateur en appelant la fonction deallocate
du filtre de synchronisation. Le pointeur ptr doit avoir été retourné précédemment par un appel à _Charalloc
pour un objet allocateur dont la valeur est égale à *this
, en allouant un objet tableau de même taille et de même type. _Chardealloc
ne lève jamais d’exception.
allocator_base ::address
Recherche l'adresse d'un objet dont la valeur est spécifiée.
pointer address(reference val);
const_pointer address(const_reference val);
Paramètres
val
Valeur const ou nonconst de l’objet dont l’adresse est recherchée.
Valeur de retour
Pointeur const ou nonconst vers l’objet trouvé d’une valeur const ou nonconst, respectivement.
Notes
Cette fonction membre est implémentée pour l’allocateur défini par l’utilisateur en retournant &val
.
allocator_base ::allocate
Alloue un bloc de mémoire suffisamment grand pour stocker au moins un nombre spécifié d'éléments.
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
Paramètres
_Nx
Nombre d’éléments du tableau à allouer.
_Hint
Ce paramètre est ignoré.
Valeur de retour
Un pointeur vers l’objet alloué.
Notes
La fonction membre implémente l’allocation de mémoire pour l’allocateur défini par l’utilisateur en retournant le résultat d’un appel à la fonction allocate
du filtre de synchronisation de type Type *
si _Nx == 1
, sinon en retournant le résultat d’un appel au cast de operator new(_Nx * sizeof(Type))
en type Type *
.
allocator_base ::allocator_base
Construit un objet de type allocator_base
.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Paramètres
right
Objet allocateur à copier.
Notes
Le premier constructeur construit une instance allocator_base. Le deuxième constructeur construit une instance allocator_base
telle que pour toute instance allocator_base<Type, _Sync>
a
, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a
.
allocator_base ::const_pointer
Type qui fournit un pointeur constant vers le type d'objet géré par l'allocateur.
typedef const Type *const_pointer;
allocator_base ::const_reference
Type qui fournit une référence constante au type d'objet géré par l'allocateur.
typedef const Type& const_reference;
allocator_base ::construct
Construit un type d'objet spécifique à une adresse spécifiée qui est initialisée avec une valeur spécifiée.
void construct(pointer ptr, const Type& val);
Paramètres
ptr
Pointeur vers l’emplacement où l’objet doit être construit.
val
Valeur avec laquelle l’objet en cours de construction doit être initialisé.
Notes
Cette fonction membre est implémentée pour l’allocateur défini par l’utilisateur en appelant new((void*)ptr Type(val)
.
allocator_base ::d allocation
Libère du stockage un nombre d'objets spécifié à partir d'une position spécifiée.
void deallocate(pointer ptr, size_type _Nx);
Paramètres
ptr
Pointeur vers le premier objet à désallouer dans le stockage.
_Nx
Nombre d’objets à désallouer dans le stockage.
Notes
Cette fonction membre est implémentée pour l’allocateur défini par l’utilisateur en appelant deallocate(ptr)
sur le filtre de synchronisation Sync
si _Nx == 1
, sinon en appelant operator delete(_Nx * ptr)
.
allocator_base ::d estroy
Appelle un destructeur d'objets sans libérer la mémoire où l'objet était stocké.
void destroy(pointer ptr);
Paramètres
ptr
Pointeur désignant l’adresse de l’objet à détruire.
Notes
Cette fonction membre est implémentée pour l’allocateur défini par l’utilisateur en appelant ptr->~Type()
.
allocator_base ::d ifference_type
Type intégral signé qui peut représenter la différence entre des valeurs de pointeurs vers le type d'objet géré par l'allocateur.
typedef std::ptrdiff_t difference_type;
allocator_base ::max_size
Retourne le nombre d'éléments de type Type
qui pourraient être alloués par un objet d'allocateur de classe avant que la mémoire libre soit complètement utilisée.
size_type max_size() const;
Valeur de retour
Nombre d’éléments pouvant être alloués.
Notes
Cette fonction membre est implémentée pour l’allocateur défini par l’utilisateur en retournant (size_t)-1 / sizeof(Type)
si 0 < (size_t)-1 / sizeof(Type)
, sinon 1
.
allocator_base ::p ointer
Type qui fournit un pointeur vers le type d'objet géré par l'allocateur.
typedef Type *pointer;
allocator_base ::reference
Type qui fournit une référence au type d'objet géré par l'allocateur.
typedef Type& reference;
allocator_base ::size_type
Type intégral non signé qui peut représenter la longueur de n’importe quelle séquence qu’un objet de type allocator_base
peut allouer.
typedef std::size_t size_type;
allocator_base ::value_type
Type géré par l'allocateur.
typedef Type value_type;