Partilhar via


Classe allocator_traits

O modelo de classe descreve um objeto que complementa um tipo de alocador. Um tipo de alocador é qualquer tipo que descreve um objeto alocador que é usado para gerenciar o armazenamento alocado. Especificamente, para qualquer tipo de alocador Alloc, você pode usar allocator_traits<Alloc> para determinar todas as informações necessárias para um contêiner habilitado para alocador. Para obter mais informações, consulte a Classe allocator padrão.

Sintaxe

template <class Alloc>
    class allocator_traits;

Membros

Typedefs

Nome Descrição
allocator_type Esse tipo é um sinônimo do parâmetro de modelo Alloc.
const_pointer Esse tipo será Alloc::const_pointer, se aquele tipo for bem formado, caso contrário, será pointer_traits<pointer>::rebind<const value_type>.
const_void_pointer Esse tipo será Alloc::const_void_pointer, se aquele tipo for bem formado, caso contrário, será pointer_traits<pointer>::rebind<const void>.
difference_type Esse tipo será Alloc::difference_type, se aquele tipo for bem formado, caso contrário, será pointer_traits<pointer>::difference_type.
pointer Esse tipo será Alloc::pointer, se aquele tipo for bem formado, caso contrário, será value_type *.
propagate_on_container_copy_assignment Esse tipo será Alloc::propagate_on_container_copy_assignment, se aquele tipo for bem formado, caso contrário, será false_type.
propagate_on_container_move_assignment Esse tipo será Alloc::propagate_on_container_move_assignment, se aquele tipo for bem formado, caso contrário, será false_type. Se o tipo for verdadeiro, um contêiner habilitado para alocador copiará seu alocador armazenado em uma atribuição de movimentação.
propagate_on_container_swap Esse tipo será Alloc::propagate_on_container_swap, se aquele tipo for bem formado, caso contrário, será false_type. Se o tipo for verdadeiro, um contêiner habilitado para alocador trocará seu alocador armazenado em uma troca.
size_type Esse tipo será Alloc::size_type, se aquele tipo for bem formado, caso contrário, será make_unsigned<difference_type>::type.
value_type Esse tipo é um sinônimo de Alloc::value_type.
void_pointer Esse tipo será Alloc::void_pointer, se aquele tipo for bem formado, caso contrário, será pointer_traits<pointer>::rebind<void>.

Métodos estáticos

Os seguintes métodos estáticos chamam o método correspondente em um parâmetro alocador determinado.

Nome Descrição
allocate Método estático que aloca memória usando o parâmetro alocador determinado.
construct Método estático que usa um alocador especificado para construir um objeto.
deallocate Método estático que usa um alocador especificado para desalocar um número especificado de objetos.
destroy Método estático que usa um alocador especificado para chamar o destruidor em um objeto sem desalocar sua memória.
max_size Método estático que usa um alocador especificado para determinar o número máximo de objetos que podem ser alocados.
select_on_container_copy_construction Método estático que chama select_on_container_copy_construction no alocador especificado.

allocate

Método estático que aloca memória usando o parâmetro alocador determinado.

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

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

Parâmetros

al
Um objeto alocador.

count
O número de elementos a serem alocados.

hint
Um const_pointer que pode ajudar o objeto alocador a atender à solicitação de armazenamento, localizando o endereço de um objeto alocado antes da solicitação. Um ponteiro nulo é tratado como nenhuma dica.

Valor de retorno

Cada método retorna um ponteiro para o objeto alocado.

O primeiro método estático retorna al.allocate(count).

O segundo método retornará al.allocate(count, hint), se essa expressão for bem formada, caso contrário, retornará al.allocate(count).

constructo

Método estático que usa um alocador especificado para construir um objeto.

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

Parâmetros

al
Um objeto alocador.

ptr
Um ponteiro para o local no qual o objeto deve ser construído.

args
Uma lista de argumentos que é passada ao construtor de objetos.

Comentários

A função de membro estática chamará al.construct(ptr, args...), se essa expressão for bem formada, caso contrário, será avaliada como ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...).

deallocate

Método estático que usa um alocador especificado para desalocar um número especificado de objetos.

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

Parâmetros

al
Um objeto alocador.

ptr
Um ponteiro para o local inicial dos objetos a serem desalocados.

count
O número de objetos a serem desalocados.

Comentários

Esse método chama al.deallocate(ptr, count).

Esse método não gera nada.

destroy

Método estático que usa um alocador especificado para chamar o destruidor em um objeto sem desalocar sua memória.

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

Parâmetros

al
Um objeto alocador.

ptr
Um ponteiro para o local do objeto.

Comentários

Esse método chamará al.destroy(ptr), se essa expressão for bem formada, caso contrário, será avaliado como ptr->~Uty().

max_size

Método estático que usa um alocador especificado para determinar o número máximo de objetos que podem ser alocados.

static size_type max_size(const Alloc& al);

Parâmetros

al
Um objeto alocador.

Comentários

Esse método retornará al.max_size(), se essa expressão for bem formada, caso contrário, retornará numeric_limits<size_type>::max().

select_on_container_copy_construction

Método estático que chama select_on_container_copy_construction no alocador especificado.

static Alloc select_on_container_copy_construction(const Alloc& al);

Parâmetros

al
Um objeto alocador.

Valor de retorno

Este método retorna al.select_on_container_copy_construction(), se aquele tipo for bem formado. Caso contrário, retornará al.

Comentários

Esse método é usado para especificar um alocador quando o contêiner associado é construído por cópia.