やや複雑なストリームを解析して保存する必要があり、解析した結果を何らかの方法で保存する必要があります。ストリームには基本的に名前と値のペアが含まれ、value
sは異なる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倍になり、それを最小限に抑える必要があるためです。