プログラムが後で実行されたときにその状態を回復できるように、(STLライブラリから)マップオブジェクトを永続化する(つまり、ファイルに書き込む)簡単で簡単な方法を知っていますか??
ご協力いただきありがとうございます
プログラムが後で実行されたときにその状態を回復できるように、(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