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

War es hilfreich?

Lösung

Ich glaube, die Bibliothek ist in der Lage std :: map, aber die Standard-Bibliothek selbst bietet keine Möglichkeit, die Serialisierung. Serialisierung ist eine große Bibliothek mit vielen Funktionen und ist einfach zu bedienen und zu Ihrer eigenen Art zu erweitern.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top