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.