std::allocate_at_least
| Definido en el archivo de encabezado <memory>
|
||
template< class Alloc > [[nodiscard]] constexpr std::allocation_result< typename std::allocator_traits<Alloc>::pointer> allocate_at_least( Alloc& a, std::size_t n ); |
(desde C++23) | |
std::allocate_at_least llama a a.allocate_at_least(n) y devuelve su resultado si la llamada está bien formada; de lo contrario, es equivalente a return {a.allocate(n), n};.
Para un Allocator a, std::allocator_at_least intenta asignar un almacenamiento para al menos n objetos Alloc::value_type y proporciona un mecanismo alternativo (como los proporcionados por std::allocator_traits) que asigna un almacenamiento para n objetos exactos.
Parámetros
| a | - | Un asignador de memoria utilizado para asignar almacenamiento. |
| n | - | El límite inferior del número de objetos para los que asignar almacenamiento. |
Valor de retorno
a.allocate_at_least(n) si la llamada está bien formada; de lo contrario, {a.allocate(n), n}.
Excepciones
Lanza qué y cuándo lance la función de asignación seleccionada.
Notas
La función miembro allocate_at_least de los tipos Allocator se proporcionan principalmente para contenedores contiguos, p. ej., std::vector y std::basic_string, para reducir la reasignación haciendo que su capacidad coincida con el tamaño realmente asignado cuando sea posible. Debido a que std::allocate_at_least proporciona un mecanismo alternativo, se puede usar directamente cuando sea apropiado.
Dado un objeto asignador a de tipo Alloc, sea result el valor devuelto por std::allocate_at_least(a, n), el almacenamiento debe ser desasignado por a.deallocate(result.ptr, m) (generalmente llamado a través de {{c|std::allocator_traits<Alloc>::deallocate(a, result.ptr, m)} }) para evitar fugas de memoria.
El argumento m utilizado en la desasignación no debe ser menor que n ni mayor que result.count, de lo contrario, el comportamiento no está definido. Ten en cuenta que n siempre es igual a result.count si el asignador no admite allocate_at_least, lo que significa que m debe ser igual a n.
| Macro de Prueba de característica |
|---|
__cpp_lib_allocate_at_least
|
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
Véase también
(C++23) |
Asigna almacenamiento al menos tan grande como el tamaño solicitado. (función miembro pública de std::allocator)
|
(C++11) |
Proporciona información sobre los tipos de asignadores. (plantilla de clase) |