std::hive es el nuevo contenedor que la norma C++26 añade en el encabezado para resolver un problema clásico: disponer a la vez de punteros estables y buena locality de caché cuando se realizan muchas inserciones y borrados. El artículo, firmado por Sandor Dargo, repasa el diseño y la API de este componente, introducido formalmente por la propuesta P0447R28 y conocido antes como plf::colony.
El contenedor se apoya en tres ejes: una lista enlazada de bloques de memoria independientes, de modo que ningún crecimiento provoca reasignación; un skipfield con codificación run-length que permite saltar en O(1) amortizado los huecos borrados durante la iteración; y la reutilización de los slots liberados para inserciones posteriores. Como consecuencia, los punteros e iteradores a elementos vivos sobreviven a cualquier inserción o borrado, la inserción y el borrado son O(1) amortizado y la posición de inserción no está especificada. Los iteradores son bidireccionales y no hay acceso aleatorio ni comparación entre contenedores.
El texto también describe cómo controlar la capacidad mínima y máxima de cada bloque con std::hive_limits, así como operaciones específicas: sort, unique, splice en O(1) entre hives y get_iterator para reconstruir un iterador a partir de un puntero. Una tabla comparativa lo enfrenta a std::vector y std::list, y cierra con los benchmarks de Daniel Lemire, que lo describen como "un std::list mucho mejor", no un vector más rápido.
