Namespaces
Variants

std::hive

De es.cppreference.net
 
 
 
 
Definido en el encabezado <hive>
template<
    class T,
    class Allocator = std::allocator<T>
> class hive;
(1) (desde C++26)
namespace pmr {
    template<class T>
    using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>;
}
(2) (desde C++26)


1) std::hive es un contenedor secuencial que proporciona operaciones de inserción y borrado en tiempo constante.
2) std::pmr::hive es una plantilla de alias que utiliza un asignador polimórfico.

El hive gestiona automáticamente su almacenamiento en múltiples bloques de memoria (bloques de elementos). La posición de inserción no está especificada, por lo que el contenedor puede reutilizar las ubicaciones de memoria de los elementos borrados.

Cuando los bloques activos (bloques de elementos que contienen elementos) se vacían, pueden ser desasignados o convertirse en bloques reservados.

Los bloques reservados se convierten en bloques activos cuando se reutilizan para almacenar elementos. Un usuario puede crear bloques reservados adicionales llamando a reserve().

Tanto el borrado como la iteración tienen complejidad en tiempo constante.

La capacidad de cada bloque activo crece según un factor definido por la implementación (por ejemplo, en 1.69). Tanto los usuarios como las implementaciones pueden limitar las capacidades mínimas y máximas de elementos de los bloques de elementos.

Un std::hive cumple con los requisitos de Contenedor, con la excepción de los operadores == y !=. Un std::hive también cumple los requisitos de Contenedor Reversible, de Contenedor Consciente del Asignador, y algunos de los requisitos de Contenedor Secuencial.

Parámetros de plantilla

T - El tipo de los elementos.
Los requisitos impuestos a los elementos dependen de las operaciones reales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento sea un tipo completo y cumpla con los requisitos de Erasable, pero muchas funciones miembro imponen requisitos más estrictos.

Allocator - Un asignador que se utiliza para adquirir/liberar memoria y para construir/destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de Asignador. El programa está mal formado si Allocator::value_type no es el mismo que T.

Tipos miembro

Tipo miembro Definición
value_type T
allocator_type Allocator
pointer std::allocator_traits<Allocator>::pointer
const_pointer std::allocator_traits<Allocator>::const_pointer
reference value_type&
const_reference const value_type&
size_type definido por la implementación
difference_type definido por la implementación
iterator definido por la implementación Iterador Bidireccional Legado a value_type
const_iterator definido por la implementación Iterador Bidireccional Legado a const value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>

Miembros de datos

Miembro Descripción
hive_limits current-limits (privado) límites actuales de capacidad de bloque
(objeto miembro solo para exposición*)

Funciones miembro

construye el hive
(función miembro pública)
destruye el hive
(función miembro pública)
asigna valores al contenedor
(función miembro pública)
asigna valores al contenedor
(función miembro pública)
asigna un rango de valores al contenedor
(función miembro pública)
devuelve el asignador asociado
(función miembro pública)
Iteradores
devuelve un iterador al principio
(función miembro pública)
devuelve un iterador al final
(función miembro pública)
devuelve un iterador inverso al principio
(función miembro pública)
devuelve un iterador inverso al final
(función miembro pública)
Capacidad
comprueba si el contenedor está vacío
(función miembro pública)
devuelve el número de elementos
(función miembro pública)
devuelve el número máximo posible de elementos
(función miembro pública)
devuelve el número de elementos que se pueden almacenar en la memoria asignada actualmente
(función miembro pública)
reserva almacenamiento
(función miembro pública)
reduce el uso de memoria liberando memoria no utilizada
(función miembro pública)
desasigna los bloques reservados y reduce la capacidad en consecuencia
(función miembro pública)
devuelve los límites actuales de capacidad de bloque
(función miembro pública)
devuelve los límites predeterminados de capacidad de bloque
(función miembro pública)
devuelve los límites estrictos de capacidad de bloque
(función miembro pública)
comprueba si los límites de capacidad dados se cumplen
(función miembro pública)
reasigna los bloques activos para que estén dentro de los límites de bloque
(función miembro pública)
Modificadores
construye el elemento en el lugar
(función miembro pública)
construye elementos en el lugar usando una sugerencia
(función miembro pública)
inserta elementos
(función miembro pública)
inserta un rango de elementos
(función miembro pública)
borra elementos
(función miembro pública)
intercambia el contenido
(función miembro pública)
limpia el contenido
(función miembro pública)
Operaciones
mueve elementos desde otro hive
(función miembro pública)
elimina elementos duplicados consecutivos
(función miembro pública)
ordena los elementos
(función miembro pública)
devuelve un iterador que apunta al mismo elemento que el puntero dado
(función miembro pública)

Funciones no miembro

especializa el algoritmo std::swap
(plantilla de función)
borra todos los elementos que satisfacen criterios específicos
(plantilla de función)

Guías de deducción

(desde C++26)

Clases auxiliares

información de diseño sobre los límites de capacidad de bloque en std::hive
(clase)

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_hive 202502L (C++26) std::hive

Ejemplo

Véase también

lista doblemente enlazada
(plantilla de clase)
lista simplemente enlazada
(plantilla de clase)

Enlaces externos

1.  plf::hive — Una implementación de referencia en github.com
2.  Colmena en Wikipedia.com