質問

マップオブジェクト(STLライブラリから)を永続化する(つまり、ファイルに書き込む)ための簡単または簡単な方法を知っているので、後でプログラムを実行するときに状態を回復できますか?

ご協力ありがとうございます

役に立ちましたか?

解決

Boost Serialization ライブラリを信じていますstd :: mapをシリアル化できますが、標準ライブラリ自体には何の意味もありません。シリアル化は、多くの機能を備えた優れたライブラリであり、使いやすく、独自のタイプに拡張できます。

他のヒント

他のコンテナ構造を永続化するのと同じ方法で、手動で行う場合は、個々の部分をディスクに書き出します:

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

次にそれらを読み戻します:

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

明らかに、マップタイプとファイルI / Oライブラリに基づいて機能させる必要があります。

それ以外の場合は、ブーストシリアル化、または googleの新しいシリアル化ライブラリ

答えはシリアル化です。詳細は、ニーズと環境によって異なります。まず、Boost Serializationライブラリを確認してください: http:/ /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top