Pergunta

Você sabe alguma maneira fácil ou simples de fazer um objeto mapa (da biblioteca STL) persistente (ou seja, escrevê-lo em um arquivo), de modo que você pode recuperar seu estado mais tarde, quando o programa em funcionamento mais tarde ??

Obrigado por sua ajuda

Foi útil?

Solução

Eu acredito que a impulso biblioteca de serialização é capaz de serialização std :: mapa, mas a própria biblioteca padrão não fornece meios. Serialização é uma grande biblioteca com um monte de recursos e é fácil de usar e estender a seus próprios tipos.

Outras dicas

Se você quiser fazê-lo manualmente, da mesma forma que você persistir qualquer outra estrutura recipiente, escrever as partes individuais no 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, em seguida, lê-los de volta em:

size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
    keyType key = inputFile.Read();
    valueType value = inputFile.Read();
    thisMap[key] = value;
}

Obviamente, você precisa fazer as coisas funcionarem com base no seu tipo de mapa e arquivo i / o da biblioteca.

Caso contrário, tente impulso serialização , ou nova biblioteca de serialização do Google .

A resposta é serialização. Especificidades depender de suas necessidades e seu ambiente. Para começar, consulte a biblioteca de serialização Boost: http: / /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top