std::hive, el nuevo contenedor que incorpora el estándar C++26, ocupa un espacio intermedio entre std::vector y std::list. Como un vector, almacena sus elementos en bloques contiguos de memoria, lo que permite recorrerlos sin saltar entre punteros; como una lista, nunca mueve un elemento tras insertarlo, garantizando estabilidad de punteros, referencias e iteradores, y permite borrar cualquier elemento en tiempo constante. Técnicamente, un hive es una lista enlazada de bloques donde cada ranura lleva un skipfield, un entero pequeño que indica al iterador cuántas posiciones borradas debe saltar.
Una evaluación de Daniel Lemire, realizada con GCC 16.1 en un Intel Xeon Gold 6548N, muestra el rendimiento medido en nanosegundos, ciclos e instrucciones retiradas por elemento. En la inserción de un millón de elementos, std::list queda un orden de magnitud por detrás del resto, con un coste combinado de malloc y free superior a 200 instrucciones por elemento. El hive cuesta aproximadamente el doble que un vector y requiere el doble de instrucciones, a causa del skipfield y la gestión de bloques. La reserva de memoria no aporta ventaja apreciable.
En iteración, el hive no supera a la lista e incluso es ligeramente más lento, situándose unas ocho veces por debajo del vector, que se beneficia de la autovectorización SIMD. La iteración en hive depende de la latencia, como la lista, aunque disfruta de mejor localidad. El borrado es el escenario donde el hive cumple su promesa: supera a la lista y mantiene punteros estables, aunque std::remove_if empata en pasadas lineales. En memoria, el hive añade alrededor de un byte por elemento sobre un vector empaquetado, frente al sobrecoste mayor de la lista. La conclusión es que el hive no reemplaza al vector, pero mejora a la std::list con iguales garantías y menor huella.
