Condividi tramite


Classe allocator_traits

Il modello di classe descrive un oggetto che integra un tipo di allocatore. Un tipo di allocatore è un tipo che descrive un oggetto allocatore usato per la gestione dello spazio di archiviazione allocato. In particolare, per qualsiasi tipo di allocatore Alloc, è possibile usare allocator_traits<Alloc> per determinare tutte le informazioni necessarie per un contenitore che supporta gli allocatori. Per altre informazioni, vedere la Classe allocator predefinita.

Sintassi

template <class Alloc>
    class allocator_traits;

Membri

Typedef

Nome Descrizione
allocator_type Questo tipo è un sinonimo del parametro di modello Alloc.
const_pointer Questo tipo è Alloc::const_pointer, se il tipo è ben formato; in caso contrario, questo tipo è pointer_traits<pointer>::rebind<const value_type>.
const_void_pointer Questo tipo è Alloc::const_void_pointer, se il tipo è ben formato; in caso contrario, questo tipo è pointer_traits<pointer>::rebind<const void>.
difference_type Questo tipo è Alloc::difference_type, se il tipo è ben formato; in caso contrario, questo tipo è pointer_traits<pointer>::difference_type.
pointer Questo tipo è Alloc::pointer, se il tipo è ben formato; in caso contrario, questo tipo è value_type *.
propagate_on_container_copy_assignment Questo tipo è Alloc::propagate_on_container_copy_assignment, se il tipo è ben formato; in caso contrario, questo tipo è false_type.
propagate_on_container_move_assignment Questo tipo è Alloc::propagate_on_container_move_assignment, se il tipo è ben formato; in caso contrario, questo tipo è false_type. Se il tipo dà come risultato true, un contenitore che supporta gli allocatori copia l'allocatore archiviato in un'assegnazione di spostamento.
propagate_on_container_swap Questo tipo è Alloc::propagate_on_container_swap, se il tipo è ben formato; in caso contrario, questo tipo è false_type. Se il tipo dà come risultato true, un contenitore che supporta gli allocatori scambia l'allocatore archiviato in uno scambio.
size_type Questo tipo è Alloc::size_type, se il tipo è ben formato; in caso contrario, questo tipo è make_unsigned<difference_type>::type.
value_type Questo tipo è sinonimo di Alloc::value_type.
void_pointer Questo tipo è Alloc::void_pointer, se il tipo è ben formato; in caso contrario, questo tipo è pointer_traits<pointer>::rebind<void>.

Metodi statici

I metodi statici seguenti chiamano il metodo corrispondente in un parametro allocatore specificato.

Nome Descrizione
allocate Metodo statico che alloca la memoria usando il parametro allocatore specificato.
construct Metodo statico che usa un allocatore specificato per costruire un oggetto.
deallocate Metodo statico che usa un allocatore specificato per deallocare un numero specificato di oggetti.
destroy Metodo statico che usa un allocatore specificato per chiamare il distruttore in un oggetto senza la deallocazione della memoria.
max_size Metodo statico che usa un allocatore specificato per determinare il numero massimo di oggetti che possono essere allocati.
select_on_container_copy_construction Metodo statico che chiama select_on_container_copy_constructionnell'allocatore specificato.

allocate

Metodo statico che alloca la memoria usando il parametro allocatore specificato.

static pointer allocate(Alloc& al, size_type count);

static pointer allocate(Alloc& al, size_type count,
    typename allocator_traits<void>::const_pointer* hint);

Parametri

ale
Un oggetto allocatore.

count
Numero di elementi da allocare.

alludere
const_pointer che può essere utile all'oggetto allocatore per soddisfare la richiesta di spazio di archiviazione individuando l'indirizzo di un oggetto allocato prima della richiesta. Un puntatore null viene considerato come assenza di hint.

Valore restituito

Ogni metodo restituisce un puntatore all'oggetto allocato.

Il primo metodo statico restituisce al.allocate(count).

Il secondo metodo statico restituisce al.allocate(count, hint), se l'espressione è ben formata; in caso contrario, restituisce al.allocate(count).

construct

Metodo statico che usa un allocatore specificato per costruire un oggetto.

template <class Uty, class Types>
static void construct(Alloc& al, Uty* ptr, Types&&... args);

Parametri

ale
Un oggetto allocatore.

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

args
Elenco di argomenti passato al costruttore dell'oggetto.

Osservazioni:

La funzione membro statica chiama al.construct(ptr, args...), se l'espressione è ben formata; in caso contrario, restituisce ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...).

deallocate

Metodo statico che usa un allocatore specificato per deallocare un numero specificato di oggetti.

static void deallocate(Alloc al,
    pointer ptr,
    size_type count);

Parametri

ale
Un oggetto allocatore.

ptr
Puntatore alla posizione iniziale degli oggetti da deallocare.

count
Numero di oggetti da deallocare.

Osservazioni:

Questo metodo chiama al.deallocate(ptr, count).

Questo metodo non genera nulla.

destroy

Metodo statico che usa un allocatore specificato per chiamare il distruttore in un oggetto senza la deallocazione della memoria.

template <class Uty>
    static void destroy(Alloc& al, Uty* ptr);

Parametri

ale
Un oggetto allocatore.

ptr
Puntatore alla posizione dell'oggetto.

Osservazioni:

Questo metodo chiama al.destroy(ptr), se l'espressione è ben formata; in caso contrario, restituisce ptr->~Uty().

max_size

Metodo statico che usa un allocatore specificato per determinare il numero massimo di oggetti che possono essere allocati.

static size_type max_size(const Alloc& al);

Parametri

ale
Un oggetto allocatore.

Osservazioni:

Questo metodo restituisce al.max_size(), se l'espressione è ben formata; in caso contrario, restituisce numeric_limits<size_type>::max().

select_on_container_copy_construction

Metodo statico che chiama select_on_container_copy_constructionnell'allocatore specificato.

static Alloc select_on_container_copy_construction(const Alloc& al);

Parametri

ale
Un oggetto allocatore.

Valore restituito

Questo metodo restituisce al.select_on_container_copy_construction(), se il tipo è ben formato; in caso contrario, restituisce al.

Osservazioni:

Questo metodo viene usato per specificare un allocatore quando il contenitore associato è creato con un costruttore di copia.