Domanda

Conosci un modo semplice o semplice per rendere persistente un oggetto mappa (dalla libreria STL) (cioè scriverlo su un file) in modo da poterne ripristinare lo stato in seguito quando il programma verrà eseguito in seguito ??

Grazie per l'aiuto

È stato utile?

Soluzione

Credo che la libreria Boost Serialization è in grado di serializzare std :: map, ma la stessa libreria standard non fornisce alcun mezzo. La serializzazione è un'ottima libreria con molte funzionalità ed è facile da usare e da estendere ai tuoi tipi.

Altri suggerimenti

Se vuoi farlo manualmente, allo stesso modo in cui dovresti persistere su qualsiasi altra struttura del contenitore, scrivi le singole parti sul disco:

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

e poi rileggili 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;
}

Ovviamente, dovrai far funzionare le cose in base al tipo di mappa e alla libreria di I / O dei file.

Altrimenti prova aumentare la serializzazione , oppure la nuova libreria di serializzazione di google .

La risposta è la serializzazione. Le specifiche dipendono dalle tue esigenze e dal tuo ambiente. Per cominciare, dai un'occhiata alla libreria Boost Serialization: http: / /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top