Pregunta

¿Conoce alguna forma fácil o sencilla de hacer que un objeto de mapa (de la biblioteca STL) sea persistente (es decir, escribirlo en un archivo) para que pueda recuperar su estado más adelante cuando el programa se ejecute más tarde?

Gracias por tu ayuda

¿Fue útil?

Solución

Creo que la Boost Serialization es capaz de serializar std :: map, pero la biblioteca estándar en sí misma no proporciona ningún medio. La serialización es una gran biblioteca con muchas características y es fácil de usar y ampliar a sus propios tipos.

Otros consejos

Si desea hacerlo manualmente, de la misma manera que persistiría en cualquier otra estructura de contenedor, escriba las partes individuales en el disco:

outputFile.Write(thisMap.size());
for (map<...>::const_iterator i = thisMap.begin(); i != thisMap.end(); ++iMap)
{
    outputFile.Write(i->first);
    outputFile.Write(i->second);
}

y luego léalos de nuevo en:

size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
    keyType key = inputFile.Read();
    valueType value = inputFile.Read();
    thisMap[key] = value;
}

Obviamente, deberás hacer que las cosas funcionen en función de tu tipo de mapa y la biblioteca de archivos de entrada / salida.

De lo contrario, intente aumentar la serialización , o nueva biblioteca de serialización de Google .

La respuesta es la serialización. Los detalles específicos dependen de sus necesidades y de su entorno. Para empezar, consulte la biblioteca de Boost Serialization: http: / /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top