Persistence of std :: map in C ++
-
02-07-2019 - |
Frage
Kennen Sie eine einfache oder einfache Möglichkeit, ein Kartenobjekt (aus der STL-Bibliothek) persistent (dh schreiben Sie es in eine Datei) zu machen, so dass Sie seinen Zustand wiederherstellen können später, wenn das Programm in Laufe später ??
Danke für Ihre Hilfe
Andere Tipps
Wenn Sie es manuell tun, auf die gleiche Weise andere Container-Struktur bestehen bleiben würde, schreiben die einzelnen Teile auf der Festplatte:
outputFile.Write(thisMap.size());
for (map<...>::const_iterator i = thisMap.begin(); i != thisMap.end(); ++iMap)
{
outputFile.Write(i->first);
outputFile.Write(i->second);
}
und sie dann zurückgelesen in:
size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
keyType key = inputFile.Read();
valueType value = inputFile.Read();
thisMap[key] = value;
}
Natürlich, werden Sie die Dinge arbeiten müssen auf der Grundlage Ihrer Kartentyp und Datei-I / O-Bibliothek.
Ansonsten versuchen Boost-Serialisierung oder Googles neue Serialisierung Bibliothek .
Die Antwort ist die Serialisierung. Besonderheiten sind abhängig von Ihren Bedürfnissen und Ihrer Umgebung. Für den Anfang überprüfen Boost-Serialisierung Bibliothek aus: http: / /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html