Namespaces
Variants

std::allocator_traits<Alloc>:: allocate_at_least

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)
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

Véase también

asigna almacenamiento no inicializado al menos tan grande como el tamaño solicitado
(función miembro pública de std::allocator<T> )