std::pmr:: polymorphic_allocator
|
Definido en el encabezado
<memory_resource>
|
||
|
template
<
class
T
>
class polymorphic_allocator ; |
(desde C++17)
(hasta C++20) |
|
|
template
<
class
T
=
std::
byte
>
class polymorphic_allocator ; |
(desde C++20) | |
La plantilla de clase
std::pmr::polymorphic_allocator
es un
Allocator
que exhibe un comportamiento de asignación diferente dependiendo del
std::pmr::memory_resource
desde el cual se construye. Dado que
memory_resource
utiliza polimorfismo dinámico para gestionar las asignaciones, diferentes instancias de contenedores con
polymorphic_allocator
como su tipo de asignador estático son interoperables, pero pueden comportarse como si tuvieran diferentes tipos de asignadores.
Todas las especializaciones de
polymorphic_allocator
cumplen con los
requisitos de completitud del asignador
.
La función miembro
polymorphic_allocator::construct
realiza
construcción uses-allocator
, de modo que los elementos de un contenedor que utiliza un
polymorphic_allocator
usarán ese mismo asignador para sus propias asignaciones. Por ejemplo, un
std::
pmr
::
vector
<
std::
pmr
::
string
>
utilizará el mismo
memory_resource
para el almacenamiento del
vector
y para el almacenamiento de cada
string
.
Para asignadores no polimórficos, se puede lograr una propagación similar con la ayuda de std::scoped_allocator_adaptor .
Contenidos |
Tipos de miembros
| Tipo de miembro | Definición |
value_type
|
T
|
Funciones miembro
construye un
polymorphic_allocator
(función miembro pública) |
|
|
(destructor)
(declarado implícitamente)
|
destructor declarado implícitamente
(función miembro pública) |
|
operator=
[eliminado]
|
operador de asignación de copia está eliminado
(función miembro pública) |
Funciones miembro públicas |
|
|
asigna memoria
(función miembro pública) |
|
|
desasigna memoria
(función miembro pública) |
|
|
construye un objeto en almacenamiento asignado
(función miembro pública) |
|
|
(obsoleto en C++20)
(rehabilitado en C++26)
|
destruye un objeto en almacenamiento asignado
(función miembro pública) |
|
(C++20)
|
asigna memoria en bruto alineada desde el recurso subyacente
(función miembro pública) |
|
(C++20)
|
libera memoria en bruto obtenida de
allocate_bytes
(función miembro pública) |
|
(C++20)
|
asigna memoria en bruto adecuada para un objeto o un array
(función miembro pública) |
|
(C++20)
|
libera memoria en bruto obtenida por
allocate_object
(función miembro pública) |
|
(C++20)
|
asigna y construye un objeto
(función miembro pública) |
|
(C++20)
|
destruye y desasigna un objeto
(función miembro pública) |
crea un nuevo
polymorphic_allocator
para uso por el constructor de copia de un contenedor
(función miembro pública) |
|
|
devuelve un puntero al recurso de memoria subyacente
(función miembro pública) |
|
Funciones no miembro
|
(eliminado en C++20)
|
comparar dos
polymorphic_allocator
s
(función) |
Notas
polymorphic_allocator
no se propaga en la asignación de copia de contenedores, asignación de movimiento o intercambio. Como resultado, la asignación de movimiento de un contenedor que utiliza
polymorphic_allocator
puede lanzar una excepción, y el intercambio de dos contenedores que utilizan
polymorphic_allocator
cuyos asignadores no son iguales resulta en comportamiento indefinido.
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_polymorphic_allocator
|
201902L
|
(C++20) |
std::pmr::polymorphic_allocator<>
como tipo de vocabulario
|
Véase también
|
(C++17)
|
una interfaz abstracta para clases que encapsulan recursos de memoria
(clase) |