Partager via


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;

Voir aussi

<allocators>