std::allocator_traits<Alloc>:: allocate_at_least
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
static
constexpr
std::
allocation_result
<
pointer, size_type
>
allocate_at_least ( Alloc & a, size_type n ) ; |
(desde C++23) | |
allocate_at_least
llama a
a.
allocate_at_least
(
n
)
y devuelve su resultado si la llamada es válida; de lo contrario, es equivalente a
return
{
a.
allocate
(
n
)
, n
}
;
.
allocator_at_least
intenta asignar almacenamiento para al menos
n
value_type
objetos, y proporciona un mecanismo de respaldo que asigna almacenamiento para exactamente
n
objetos.
Contenidos |
Parámetros
| a | - | un asignador utilizado para asignar almacenamiento |
| n | - | el límite inferior del número de objetos para los cuales asignar almacenamiento |
Valor de retorno
a. allocate_at_least ( n ) si está bien formado.
De lo contrario, std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n } .
Excepciones
Lanza qué y cuándo la función de asignación seleccionada lanza.
Notas
La función miembro
allocate_at_least
de los tipos
Allocator
se proporciona principalmente para contenedores contiguos, como
std::vector
y
std::basic_string
, con el fin de reducir las reasignaciones haciendo que su capacidad coincida con el tamaño realmente asignado cuando sea posible. Debido a que
allocate_at_least
proporciona un mecanismo de respaldo, puede utilizarse directamente donde sea apropiado.
Dado un objeto asignador
a
de tipo
Alloc
, sea
result
el valor retornado por
std::
allocator_traits
<
Alloc
>
::
allocate_at_least
(
a, n
)
, el almacenamiento debe ser desasignado mediante
a.
deallocate
(
result.
ptr
, m
)
(normalmente invocado a través de
std::
allocator_traits
<
Alloc
>
::
deallocate
(
a, result.
ptr
, m
)
) para evitar fugas de memoria.
El argumento
m
utilizado en la desasignación debe ser no menor que
n
y no mayor que
result.
count
, de lo contrario, el comportamiento es indefinido. Nótese que
n
siempre es igual a
result.
count
si el asignador no proporciona
allocate_at_least
, lo que significa que
m
debe ser igual a
n
.
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_allocate_at_least
|
202302L
|
(C++23) |
allocate_at_least
etc.
|
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
(C++23)
|
asigna almacenamiento no inicializado al menos tan grande como el tamaño solicitado
(función miembro pública de
std::allocator<T>
)
|