std::allocator_traits::allocate
Definido en el archivo de encabezado <memory>
|
||
(1) | ||
static pointer allocate( Alloc& a, size_type n ); |
(desde C++11) (hasta C++20) |
|
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n ); |
(desde C++20) | |
(2) | ||
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(desde C++11) (hasta C++20) |
|
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(desde C++20) | |
Utiliza el asignador a
para asignar n*sizeof(Alloc::value_type) bytes de almacenamiento no inicializado. Se crea un array de tipo Alloc::value_type[n] en el almacenamiento, pero ninguno de sus elementos se construye.
hint
. Llama a a.allocate(n, indirecta) si es posible. Si no es posible (por ejemplo, a no tiene una función miembro de dos argumentos allocate()), llama a a.allocate(n).Contenido |
[editar] Parámetros
a | - | El asignador a usar. |
n | - | El número de objetos para los que asignar almacenamiento. |
hint | - | Puntero a una ubicación de memoria cercana. |
[editar] Valor de retorno
El puntero devuelto por la llamada a a.allocate(n)
.
[editar] Notas
No se requería que Alloc::allocate
creara un objeto de tipo array hasta P0593R6, lo que hizo que el uso de un asignador no construido por defecto para std::vector y algunos otros contenedores no quedara actualmente bien definido de acuerdo con la especificación del lenguaje principal.
Después de llamar a allocate
y antes de la construcción de elementos, la aritmética de punteros de Alloc::value_type* está bien definida dentro del array asignado, pero el comportamiento no está definido si se accede a los elementos.
[editar] Véase también
Asigna almacenamiento no inicializado. (función miembro pública de std::allocator )
|