10

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

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

4

3 に答える 3

11

Boost Serializationライブラリは std::map をシリアライズできると思いますが、標準ライブラリ自体には手段がありません。シリアル化は、多くの機能を備えた優れたライブラリであり、使いやすく、独自の型に拡張できます。

于 2008-09-26T03:51:14.803 に答える
10

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

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 の新しいシリアル化ライブラリを試してください。

于 2008-09-26T03:55:55.040 に答える
2

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

于 2008-09-26T03:54:05.527 に答える