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.