2008-09-26 11 views
8

Connaissez-vous un moyen facile ou simple de rendre un objet cartographique (à partir de la bibliothèque STL) persistant (c'est-à-dire l'écrire dans un fichier) afin de retrouver son état plus tard? en cours d'exécution plus tard ??Persistance de std :: map en C++

Merci pour votre aide

Répondre

11

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

10

Si vous voulez le faire manuellement, de la même manière que vous persistez toute autre structure de récipient, écrire 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); 
} 

et les lire puis de nouveau 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; 
} 

de toute évidence, vous aurez besoin de faire fonctionner les choses en fonction de votre type de carte et le fichier i/o bibliothèque.

Sinon, essayez boost serialization ou google's new serialization library.

Questions connexes