Condividi tramite


Classe allocator_base

Definisce la classe base e le funzioni comuni necessari per creare un allocatore definito dall'utente da un filtro di sincronizzazione.

Sintassi

template <class Type, class Sync>
class allocator_base

Parametri

Type
Tipo degli elementi assegnato dall'allocatore.

Sincronizzare
I criteri di sincronizzazione per l'allocatore, ovvero la Classe sync_none, la Classe sync_per_container, la Classe sync_per_thread o la Classe sync_shared.

Costruttori

Costruttore Descrizione
allocator_base Costruisce un oggetto di tipo allocator_base.

Typedef

Nome tipo Descrizione
const_pointer Tipo che fornisce un puntatore costante al tipo di oggetto gestito dall'allocatore.
const_reference Tipo che fornisce un riferimento costante al tipo di oggetto gestito dall'allocatore.
difference_type Tipo integrale con segno che può rappresentare la differenza tra valori di puntatori al tipo di oggetto gestito dall'allocatore.
pointer Tipo che fornisce un puntatore al tipo di oggetto gestito dall'allocatore.
reference Tipo che fornisce un riferimento al tipo di oggetto gestito dall'allocatore.
size_type Tipo integrale senza segno che può rappresentare la lunghezza di qualsiasi sequenza che un oggetto di tipo allocator_base può allocare.
value_type Tipo gestito dall'allocatore.

Funzioni membro

Funzione membro Descrizione
_Charalloc Alloca lo spazio di archiviazione per una matrice di tipo char.
_Chardealloc Libera lo spazio di archiviazione per la matrice contenente gli elementi di tipo char.
address Trova l'indirizzo di un oggetto il cui valore è specificato.
allocate Alloca un blocco di memoria sufficiente a contenere almeno un numero specificato di elementi.
construct Costruisce un tipo specifico di oggetto su un indirizzo specificato che viene inizializzato con un valore specificato.
deallocate Libera un numero specificato di oggetti dall'archiviazione iniziando da una posizione specificata.
destroy Chiama un distruttore di oggetti senza deallocare la memoria in cui è stato archiviato l'oggetto.
max_size Restituisce il numero di elementi di tipo Type che possono essere allocati da un oggetto della classe allocator prima che la memoria libera si esaurisca.

Requisiti

Intestazione:<allocatori>

Spazio dei nomi: stdext

allocator_base::_Charalloc

Alloca lo spazio di archiviazione per una matrice di tipo char.

char *_Charalloc(size_type count);

Parametri

count
Numero di elementi della matrice da allocare.

Valore restituito

Puntatore all'oggetto allocato.

Osservazioni:

Questa funzione membro viene usata dai contenitori quando compilata con un compilatore che non può compilare di nuovo l'associazione. Implementa _Charalloc per l'allocatore definito dall'utente restituendo il risultato di una chiamata alla funzione allocate del filtro di sincronizzazione.

allocator_base::_Chardealloc

Libera lo spazio di archiviazione per la matrice contenente gli elementi di tipo char.

void _Chardealloc(void* ptr, size_type count);

Parametri

ptr
Puntatore al primo oggetto da deallocare dall'archivio.

count
Numero di oggetti da deallocare dall'archivio.

Osservazioni:

Questa funzione membro viene usata dai contenitori quando compilata con un compilatore che non può compilare di nuovo l'associazione. Implementa _Chardealloc per l'allocatore definito dall'utente chiamando la funzione deallocate del filtro di sincronizzazione. Il puntatore ptr deve essere stato restituito in precedenza da una chiamata a _Charalloc per un oggetto allocatore che risulta uguale a *this, allocando un oggetto matrice con dimensione e tipo corrispondenti. _Chardealloc non genera mai un'eccezione.

allocator_base::address

Trova l'indirizzo di un oggetto il cui valore è specificato.

pointer address(reference val);

const_pointer address(const_reference val);

Parametri

val
Valore const o nonconst dell'oggetto di cui viene cercato l'indirizzo.

Valore restituito

Un puntatore const o nonconst all'oggetto trovato rispettivamente di valore const o nonconst.

Osservazioni:

Questa funzione membro viene implementata per l'allocatore definito dall'utente restituendo &val.

allocator_base::allocate

Alloca un blocco di memoria sufficiente a contenere almeno un numero specificato di elementi.

template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);

pointer allocate(size_type _Nx);

Parametri

_Nx
Numero di elementi della matrice da allocare.

_Hint
Questo parametro viene ignorato.

Valore restituito

Puntatore all'oggetto allocato.

Osservazioni:

La funzione membro implementa l'allocazione di memoria per l'allocatore definito dall'utente restituendo il risultato di una chiamata alla funzione allocate del filtro di sincronizzazione di tipo Type * se _Nx == 1; in caso contrario, restituendo il risultato di una chiamata al cast operator new(_Nx * sizeof(Type)) al tipo Type *.

allocator_base::allocator_base

Costruisce un oggetto di tipo allocator_base.

allocator_base();

template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);

Parametri

right
Oggetto allocatore da copiare.

Osservazioni:

Il primo costruttore crea un'istanza allocator_base. Il secondo costruttore crea un'istanza allocator_base in modo che per qualsiasi istanza allocator_base<Type, _Sync>a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.

allocator_base::const_pointer

Tipo che fornisce un puntatore costante al tipo di oggetto gestito dall'allocatore.

typedef const Type *const_pointer;

allocator_base::const_reference

Tipo che fornisce un riferimento costante al tipo di oggetto gestito dall'allocatore.

typedef const Type& const_reference;

allocator_base::construct

Costruisce un tipo specifico di oggetto su un indirizzo specificato che viene inizializzato con un valore specificato.

void construct(pointer ptr, const Type& val);

Parametri

ptr
Puntatore al percorso in cui deve essere creato l'oggetto.

val
Il valore con cui viene inizializzato l'oggetto costruito.

Osservazioni:

Questa funzione membro viene implementata per l'allocatore definito dall'utente tramite una chiamata a new((void*)ptr Type(val).

allocator_base::d eallocate

Libera un numero specificato di oggetti dall'archiviazione iniziando da una posizione specificata.

void deallocate(pointer ptr, size_type _Nx);

Parametri

ptr
Puntatore al primo oggetto da deallocare dall'archivio.

_Nx
Numero di oggetti da deallocare dall'archivio.

Osservazioni:

Questa funzione membro viene implementata per l'allocatore definito dall'utente tramite una chiamata a deallocate(ptr) nel filtro di sincronizzazione Sync se _Nx == 1; in caso contrario, tramite una chiamata a operator delete(_Nx * ptr).

allocator_base::d estroy

Chiama un distruttore di oggetti senza deallocare la memoria in cui è stato archiviato l'oggetto.

void destroy(pointer ptr);

Parametri

ptr
Un puntatore che indica l'indirizzo dell'oggetto da distruggere.

Osservazioni:

Questa funzione membro viene implementata per l'allocatore definito dall'utente tramite una chiamata a ptr->~Type().

allocator_base::d ifference_type

Tipo integrale con segno che può rappresentare la differenza tra valori di puntatori al tipo di oggetto gestito dall'allocatore.

typedef std::ptrdiff_t difference_type;

allocator_base::max_size

Restituisce il numero di elementi di tipo Type che potrebbe essere assegnata da un oggetto dell'allocatore della classe prima che la memoria libera si esaurisca.

size_type max_size() const;

Valore restituito

Numero degli elementi che possono essere allocati.

Osservazioni:

Questa funzione membro viene implementata per l'allocatore definito dall'utente restituendo (size_t)-1 / sizeof(Type) se 0 < (size_t)-1 / sizeof(Type): in caso contrario, restituendo 1.

allocator_base::p ointer

Tipo che fornisce un puntatore al tipo di oggetto gestito dall'allocatore.

typedef Type *pointer;

allocator_base::reference

Tipo che fornisce un riferimento al tipo di oggetto gestito dall'allocatore.

typedef Type& reference;

allocator_base::size_type

Tipo integrale senza segno che può rappresentare la lunghezza di qualsiasi sequenza che un oggetto di tipo allocator_base può allocare.

typedef std::size_t size_type;

allocator_base::value_type

Tipo gestito dall'allocatore.

typedef Type value_type;

Vedi anche

<allocators>