Czy znasz prosty lub prosty sposób, aby obiekt mapy (z biblioteki STL) był trwały (tzn. Zapisywał go do pliku), aby można było odzyskać jego stan później, gdy program w biegu później?Trwałość std :: map w C++
Dzięki za pomoc
Czy znasz prosty lub prosty sposób, aby obiekt mapy (z biblioteki STL) był trwały (tzn. Zapisywał go do pliku), aby można było odzyskać jego stan później, gdy program w biegu później?Trwałość std :: map w C++
Dzięki za pomoc
wierzę biblioteka Boost Serialization jest zdolny do szeregowania std :: map, ale sama biblioteka standardowa zawiera żadnych środków. Serializacja jest świetną biblioteką z wieloma funkcjami i jest łatwa w użyciu oraz rozszerza się na własne typy.
Odpowiedzią jest serializacja. Specyfika zależy od twoich potrzeb i twojego środowiska. Na początek sprawdź bibliotekę doładowania serializacji: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html
Jeśli chcesz zrobić to ręcznie, w ten sam sposób chcesz utrzymywać jakiekolwiek inne struktury kontenera, pisać poszczególne części na dysku:
outputFile.Write(thisMap.size());
for (map<...>::const_iterator i = thisMap.begin(); i != thisMap.end(); ++iMap)
{
outputFile.Write(i->first);
outputFile.Write(i->second);
}
i Następnie przeczytaj je ponownie w:
size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
keyType key = inputFile.Read();
valueType value = inputFile.Read();
thisMap[key] = value;
}
Oczywiście musisz sprawić, by rzeczy działały w oparciu o twój typ mapy i bibliotekę plików i/o.
W przeciwnym razie spróbuj boost serialization lub google's new serialization library.