Compartir vía


allocator_traits (clase)

La plantilla de clase describe a un objeto que complementa a un tipo de asignador. Un tipo de asignador es cualquier tipo que describe a un objeto de asignador que se usa para administrar el almacenamiento asignado. Concretamente, para cualquier tipo de asignador Alloc, puede usar allocator_traits<Alloc> para determinar toda la información que necesita un contenedor habilitado como asignador. Para más información, vea allocator (Clase).

Sintaxis

template <class Alloc>
    class allocator_traits;

Miembros

Typedefs

Nombre Descripción
allocator_type Este tipo es un sinónimo del parámetro de plantilla Alloc.
const_pointer Este tipo es Alloc::const_pointer, en caso de tener el formato correcto; en caso contrario, es pointer_traits<pointer>::rebind<const value_type>.
const_void_pointer Este tipo es Alloc::const_void_pointer, en caso de tener el formato correcto; en caso contrario, es pointer_traits<pointer>::rebind<const void>.
difference_type Este tipo es Alloc::difference_type, en caso de tener el formato correcto; en caso contrario, es pointer_traits<pointer>::difference_type.
pointer Este tipo es Alloc::pointer, en caso de tener el formato correcto; en caso contrario, es value_type *.
propagate_on_container_copy_assignment Este tipo es Alloc::propagate_on_container_copy_assignment, en caso de tener el formato correcto; en caso contrario, es false_type.
propagate_on_container_move_assignment Este tipo es Alloc::propagate_on_container_move_assignment, en caso de tener el formato correcto; en caso contrario, es false_type. Si el tipo es verdadero, un contenedor habilitado como asignador copia su asignador almacenado en una asignación de movimiento.
propagate_on_container_swap Este tipo es Alloc::propagate_on_container_swap, en caso de tener el formato correcto; en caso contrario, es false_type. Si el tipo es verdadero, un contenedor habilitado como asignador intercambia su asignador almacenado en un cambio.
size_type Este tipo es Alloc::size_type, en caso de tener el formato correcto; en caso contrario, es make_unsigned<difference_type>::type.
value_type Este tipo es un sinónimo de Alloc::value_type.
void_pointer Este tipo es Alloc::void_pointer, en caso de tener el formato correcto; en caso contrario, es pointer_traits<pointer>::rebind<void>.

Métodos estáticos

Los siguientes métodos estáticos llaman al método correspondiente en un parámetro de asignador determinado.

Nombre Descripción
allocate Método estático que asigna memoria mediante el parámetro de asignador determinado.
construct Método estático que usa un asignador especificado para crear un objeto.
deallocate Método estático que usa un asignador especificado para desasignar un número determinado de objetos.
destroy Método estático que usa un asignador especificado para llamar al destructor de un objeto sin desasignar su memoria.
max_size Método estático que usa un asignador especificado para determinar el número máximo de objetos que se pueden asignar.
select_on_container_copy_construction Método estático que se llama a select_on_container_copy_construction en el asignador especificado.

allocate

Método estático que asigna memoria mediante el parámetro de asignador 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
Un objeto de asignador.

count
Número de elementos que se van a asignar.

Sugerencia:
const_pointer que puede ayudar al objeto de asignador a satisfacer la solicitud de almacenamiento al buscar la dirección de un objeto asignado antes de la solicitud. Un puntero nulo se trata como si no hubiera sugerencia.

Valor devuelto

Cada método devuelve un puntero al objeto asignado.

El primer método estático devuelve al.allocate(count).

Si la expresión tiene el formato correcto, el segundo método devuelve al.allocate(count, hint); de lo contrario, devuelve al.allocate(count).

construct

Método estático que usa un asignador especificado para crear un objeto.

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

Parámetros

al
Un objeto de asignador.

ptr
Puntero a la ubicación donde se va a crear el objeto.

args
Lista de argumentos que se pasa al constructor de objeto.

Comentarios

Si la expresión tiene el formato correcto, la función miembro estática llama a al.construct(ptr, args...); de lo contrario, se evalúa como ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...).

deallocate

Método estático que usa un asignador especificado para desasignar un número determinado de objetos.

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

Parámetros

al
Un objeto de asignador.

ptr
Un puntero a la ubicación inicial de los objetos que se van a desasignar.

count
Número de objetos que se van a desasignar.

Comentarios

Este método llama a al.deallocate(ptr, count).

Este método no produce nada.

destroy

Método estático que usa un asignador especificado para llamar al destructor de un objeto sin desasignar su memoria.

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

Parámetros

al
Un objeto de asignador.

ptr
Puntero a la ubicación del objeto.

Comentarios

Si esa expresión tiene el formato correcto, este método llama a al.destroy(ptr); de lo contrario, se evalúa como ptr->~Uty().

max_size

Método estático que usa un asignador especificado para determinar el número máximo de objetos que se pueden asignar.

static size_type max_size(const Alloc& al);

Parámetros

al
Un objeto de asignador.

Comentarios

Si esa expresión tiene el formato correcto, este método devuelve al.max_size(); de lo contrario, devuelve numeric_limits<size_type>::max().

select_on_container_copy_construction

Método estático que se llama a select_on_container_copy_construction en el asignador especificado.

static Alloc select_on_container_copy_construction(const Alloc& al);

Parámetros

al
Un objeto de asignador.

Valor devuelto

Si ese tipo tiene el formato correcto, este método devuelve al.select_on_container_copy_construction(); de lo contrario, devuelve al.

Comentarios

Este método se usa para especificar un asignador cuando se ha aplicado el constructor de copias al contenedor asociado.