2008-09-26 15 views
8

¿Conoces alguna forma fácil o simple de hacer persistente un objeto de mapa (de la biblioteca STL) (es decir, escribirlo en un archivo) para que pueda recuperar su estado más tarde cuando el programa en correr más tarde?Persistencia de std :: map en C++

Gracias por su ayuda

Respuesta

11

creo que la biblioteca Boost Serialization es capaz de serializar std :: mapa, pero la propia biblioteca estándar proporciona ninguna manera. La serialización es una gran biblioteca con muchas funciones y es fácil de usar y extender a sus propios tipos.

10

Si desea hacerlo de forma manual, la misma forma en que persiste cualquier otra estructura del contenedor, escribir 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 a continuación, lea 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, usted necesita para hacer las cosas de trabajo basados ​​en el tipo de mapa y archivo de e/S de la biblioteca.

De lo contrario, pruebe boost serialization, o google's new serialization library.

Cuestiones relacionadas