Namespaces
Variants

std:: allocator_traits

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definido en el encabezado <memory>
template < class Alloc >
struct allocator_traits ;
(desde C++11)

La plantilla de clase allocator_traits proporciona la forma estandarizada de acceder a varias propiedades de los Allocator s . Los contenedores estándar y otros componentes de la biblioteca estándar acceden a los allocators a través de esta plantilla.

Es posible utilizar cualquier tipo de clase como asignador, siempre que la especialización proporcionada por el usuario de std::allocator_traits implemente toda la funcionalidad requerida.

(until C++23)

Un programa que declare una especialización explícita o parcial de std::allocator_traits está mal formado, sin requerir diagnóstico.

(since C++23)

El valor predeterminado, no especializado, std::allocator_traits contiene los siguientes miembros:

Contenidos

Tipos de miembros

Tipo Definición
allocator_type Alloc
value_type Alloc::value_type
pointer Alloc::pointer si está presente, de lo contrario value_type*
const_pointer Alloc::const_pointer si está presente, de lo contrario std:: pointer_traits < pointer > :: rebind < const value_type >
void_pointer Alloc::void_pointer si está presente, de lo contrario std:: pointer_traits < pointer > :: rebind < void >
const_void_pointer Alloc::const_void_pointer si está presente, de lo contrario std:: pointer_traits < pointer > :: rebind < const void >
difference_type Alloc::difference_type si está presente, de lo contrario std:: pointer_traits < pointer > :: difference_type
size_type Alloc::size_type si está presente, de lo contrario std:: make_unsigned < difference_type > :: type
propagate_on_container_copy_assignment Alloc::propagate_on_container_copy_assignment si está presente, de lo contrario std::false_type
propagate_on_container_move_assignment Alloc::propagate_on_container_move_assignment si está presente, de lo contrario std::false_type
propagate_on_container_swap Alloc::propagate_on_container_swap si está presente, de lo contrario std::false_type
is_always_equal Alloc::is_always_equal si está presente, de lo contrario std:: is_empty < Alloc > :: type

Plantillas de alias de miembro

Tipo Definición
rebind_alloc<T> Alloc::rebind<T>::other si está presente, de lo contrario SomeAllocator<T, Args> si este Alloc es de la forma SomeAllocator < U, Args > , donde Args son cero o más argumentos de tipo
rebind_traits<T> std :: allocator_traits < rebind_alloc < T >>

Funciones miembro

[static]
asigna almacenamiento no inicializado usando el asignador
(función miembro estática pública)
[static] (C++23)
asigna almacenamiento al menos tan grande como el tamaño solicitado mediante un asignador
(función miembro estática pública)
[static]
desasigna almacenamiento usando el asignador
(función miembro estática pública)
[static]
construye un objeto en el almacenamiento asignado
(plantilla de función)
[static]
destruye un objeto almacenado en el almacenamiento asignado
(plantilla de función)
[static]
devuelve el tamaño máximo de objeto soportado por el asignador
(función miembro estática pública)
obtiene el asignador a usar después de copiar un contenedor estándar
(función miembro estática pública)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2108 C++11 no existía forma de mostrar que un asignador es sin estado is_always_equal proporcionado

Véase también

contenedor que utiliza asignador; uso de características asociadas (ej. propagate_on_container_swap )
(requisito con nombre)
el asignador por defecto
(plantilla de clase)
implementa asignador multinivel para contenedores multinivel
(plantilla de clase)
proporciona información sobre tipos similares a punteros
(plantilla de clase)