Я хочу создать хэш-карту (или другую структуру, если у вас есть предложения) для хранения пары ключ-значение. Все ключи будут вставлены сразу, одновременно с созданием карты, но я не знаю, какими будут ключи (строки произвольной длины) до времени выполнения, когда мне нужно будет создать карту.
Я разбираю строку запроса вроде этой "x = 100 & name = bob & color = red & y = 150"
(но строка может иметь неограниченное количество переменных, а переменные могут иметь имя любой длины).
Я хочу проанализировать его один раз и создать хеш-карту, желательно минимальную и с идеальной хеш-функцией для удовлетворения требований линейного хранения. После создания карты значения не будут изменены или удалены, к карте больше не будут добавляться пары ключ-значение, поэтому вся карта фактически является константой. Я предполагаю, что переменная не встречается дважды в строке (IE. "x = 1 & x = 2"
недопустимо).
Я кодирую на C
, и в настоящее время у меня есть функция, которую я могу использовать, например get ("x")
, которая вернет строку "100"
, но он анализирует строку запроса каждый раз, что занимает O (n)
раз. Я хотел бы проанализировать его один раз при первой загрузке, поскольку это очень большая строка запроса, и каждое значение будет прочитано несколько раз.Хотя я использую C
, мне не нужен код на C
в качестве ответа. Псевдокод или любые предложения были бы потрясающими!