やや複雑なストリームを解析して保存する必要があり、解析した結果を何らかの方法で保存する必要があります。ストリームには基本的に名前と値のペアが含まれ、valuesは異なるsに対して異なるタイプである可能性がありnameます。基本的に、私はkey(常に文字列)のペアへのマップになり<type, value>ます。
私はこのようなものから始めました:
typedef enum ValidType {STRING, INT, FLOAT, BINARY} ValidType;
map<string, pair<ValidType, void*>> Data;
しかし、私は本当に嫌いvoid*で、ポインタを保存しています。もちろん、私はいつでも値をバイナリデータとして保存できます(vector<char>たとえば)。その場合map、
map<string, pair<ValidType, vector<char>>> Data;
ただし、この場合、実際の値が必要になるたびにバイナリデータを解析する必要があり、パフォーマンスの点で非常にコストがかかります。
メモリーフットプリント(データ量はそれほど多くない)についてはあまり心配していませんが、パフォーマンスについては心配していることを考えると、そのようなデータを保存する正しい方法は何でしょうか?
理想的には、ブーストの使用は避けたいと思います。ブーストを使用すると、最終的なアプリのサイズが3倍になり、それを最小限に抑える必要があるためです。