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;