std::hive
| 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) |
std::hive es un contenedor secuencial que proporciona operaciones de inserción y borrado en tiempo constante.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.
| Esta sección está incompleta Motivo: descripciones de iteradores |
Parámetros de plantilla
| T | - | El tipo de los elementos.
| ||
| 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
(C++26) |
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
(C++26) |
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
| Esta sección está incompleta Motivo: sin ejemplo |
Véase también
| lista doblemente enlazada (plantilla de clase) | |
(C++11) |
lista simplemente enlazada (plantilla de clase) |
Enlaces externos
| 1. | plf::hive — Una implementación de referencia en github.com
|
| 2. | Colmena en Wikipedia.com |