Хранить разные типы данных на карте - с информацией о типе
Мне нужно проанализировать и сохранить несколько (но не слишком) сложный поток и нужно как-то сохранить проанализированный результат. Поток по существу содержит пары имя-значение сvalue
s может быть разного типа для разныхname
s. В основном я получаю картуkey
(всегда строка) в пару.
Я начал с чего-то вроде этого:
typedef enum ValidType {STRING, INT, FLOAT, BINARY} ValidType;
map Data;
Однако я действительно не люблюvoid*
и хранение указателей. Конечно, я всегда могу сохранить значение в виде двоичных данных (vector
например), в этом случаеmap
в конечном итоге
map Data;
Тем не менее, в этом случае мне придется анализировать двоичные данные каждый раз, когда мне нужно фактическое значение, которое будет довольно дорогим с точки зрения производительности.
Учитывая, что меня не слишком беспокоит объем памяти (объем данных невелик), но я обеспокоен производительностью, каким будет правильный способ хранения таких данных?
В идеале яЯ хотел бы избежать использования boost, поскольку это увеличило бы размер конечного приложения в 3 раза, если не больше, и мне нужно минимизировать это.