Question

Connaissez-vous un moyen simple ou simple de rendre un objet de carte (à partir de la bibliothèque STL) persistant (c'est-à-dire de l'écrire dans un fichier) afin que vous puissiez récupérer son état ultérieurement lorsque le programme sera exécuté ultérieurement?

Merci de votre aide

Était-ce utile?

La solution

Je crois que la bibliothèque Boost Serialization est capable de sérialiser std :: map, mais la bibliothèque standard elle-même ne fournit aucun moyen. La sérialisation est une excellente bibliothèque avec beaucoup de fonctionnalités et est facile à utiliser et à étendre à vos propres types.

Autres conseils

Si vous souhaitez le faire manuellement, de la même manière que vous persisteriez dans une autre structure de conteneur, écrivez les pièces individuelles sur le disque:

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

puis relisez-les dans:

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

Évidemment, vous devrez faire en sorte que les choses fonctionnent en fonction de votre type de carte et de votre bibliothèque d’entrées / sorties.

Sinon, essayez de la la sérialisation boost , ou nouvelle bibliothèque de sérialisation de Google .

La réponse est la sérialisation. Les spécificités dépendent de vos besoins et de votre environnement. Pour commencer, consultez la bibliothèque Boost Serialization: http: / /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top