Задать вопрос

Хранение списка параметров с возможностью обращения по имени

Есть некий список параметров в виде набора строк. Чтобы было яснее — выглядит он как заголовок ответа от веб-сервера, т.е. формат "имя_параметра: значение\r\n". Минимум хранится один параметр.
Стоит задача хранения списка параметров с их именами и значениями, а также быстрого поиска значения необходимого параметра по его имени.
Например, есть список:
параметр1: значение1\r\n
параметр2: значение2\r\n

И должны быть аналогии команд:
getValueByName("параметр2");
addNewValueToList(param_list, "параметр37", "значение37");


Меня интересуют уже готовые решения организации хранения и поиска. Я уже рассмотрел несколько вариантов:
boost.property_tree — в этой библиотеке реализованы методы работы с форматами xml, ini, info, json — подходящего для меня тут нет. Если пользоваться этим контейнером, то придется писать свой парсер.
хэш-таблицы — создаётся таблица соответствий по имени параметра. На основе этого можно что-то сообразить, но мне что-то всё равно не нравится в этом методе;
хранение в массиве — этот вариант мне менее интересен как самый сырой. Здесь придется самому писать все функции.

Подскажите, что же мне выбрать. Может подскажете лучше вариант.
  • Вопрос задан
  • 2705 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
burdakovd
@burdakovd
Хранение — хэш-таблицы (или std::map, если с производительностью проблем нет).

Парсинг — это уже другой вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
alexeygrigorev
@alexeygrigorev
Переворачиватель пингвинов
Я тоже бы использовал hash-таблицы — в g++ есть класс hash_table, в ms c++ вроде бы тоже, но точно не уверен.
Ответ написан
Комментировать
froex
@froex Автор вопроса
Всем спасибо. Буду осваивать тогда хэш-таблицы. иного выбора, видимо, нет. Парсер, так уж и быть, напишу вручную тогда.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
На самом деле храните все в mongodb она как раз для этого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы