我需要解析和存储一个有点(但不是太)复杂的流,并且需要以某种方式存储解析的结果。该流本质上包含名称-值对,其中value
s 可能对于不同name
的 s 具有不同的类型。基本上,我最终得到了一个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;
然而,在这种情况下,每次需要实际值时我都必须解析二进制数据,这在性能方面会非常昂贵。
考虑到我不太担心内存占用(数据量不大),但我担心性能,那么存储这些数据的正确方法是什么?
理想情况下,我想避免使用 boost,因为这会使最终应用程序的大小增加 3 倍,如果不是更多的话,我需要将其最小化。