Me gusta desarrollar algoritmos usando STL, sin embargo, tengo este problema recurrente donde mis conjuntos de datos son demasiado grandes para el montón.Clases de contenedor STL con respaldo de disco?
He estado buscando sustitutos para contenedores STL y algoritmos que están respaldados por disco, es decir, las estructuras de datos están almacenadas en el disco en lugar de en el montón.
Un amigo me señaló recientemente hacia stxxl. Antes de involucrarme demasiado ... ¿Hay otros reemplazos de STL respaldados por disco disponibles que debería considerar?
NOTA: No estoy interesado en la persistencia o las bases de datos incrustadas. Por favor, no mencione boost :: serialization, POST ++, Relational Template Library, Berkeley DB, sqlite, etc. Conozco estos proyectos y los uso cuando son apropiados para mis propósitos.
ACTUALIZACIÓN: Varias personas han mencionado los archivos de mapeo de memoria y el uso de un asignador de costumbre, buenas sugerencias BTW, pero me gustaría señalar que la discusión here donde David Abraham sugiere que se necesitarían iteradores personalizados para contenedores de disco con respaldo . Lo que significa que no es probable que el enfoque del asignador personalizado funcione.
Si sus conjuntos de datos son demasiado grandes para el almacenamiento dinámico, debe considerar si la arquitectura de su sistema es correcta (por ejemplo, si se mueve a un sistema de 64 bits; estos son más comunes ahora que cuando se formuló la pregunta). También debe considerar si el STL es el enfoque correcto; puede hacer suposiciones sobre el tamaño del conjunto de datos que no son válidas para usted. –
@Donal Puede que no esté reservando la cantidad correcta de memoria. –