ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
985979 Топик полностью
fk0, легенда (14.03.2020 12:10, просмотров: 204) ответил AlexG на А не пробегал ли где сводный системный топик по встраиваемым базам данных? Коллеги подкинули проблем, выяснилось что список параметров, которые отдает их железки, динамический. Программа же моей железки сейчас умеет работать только с заранее известными параметрами и запросить и сохранить у себя группу переменных неизвестного состава не может. Предусмотреть заранее все возможные варианты параметров не реально, т.к. их порядка 1013. Вариантом решения выглядит некое подобие базы данных, живущее в
Это называется "ассоциативный массив", SQL и Oracle для этого не нужны. Простейший ассоциативный массив делается из хеш-таблицы с прямой адресацией и пишется такой код за полчаса. если с одинаковым префиксом, то сложнее, это уже префиксное дерево. Вместо которого можно придумать rolling hash и алгоритм Рабина Карпа. 

Однако, чтоб не утонуть в сложности, может быть проще сделать метод перечисления отсортированного списка ключей, из которого отобрать совпадающие с префиксом вручную. Kлючи вставляются в обычный массив который сортируется по ключам потом. При выборке из этого массива находится итератор указывающий на нижнюю границу (lower bound) для заданного префикса (это делается бинарным поиском) и все последующие ключи вручную, до первого несовпадения, проверяются на совпадение префикса. Вместе с ключём в массиве хранится сразу ссылка на значение... В таком методе вставка/удаление дороговаты (пересортировка массива). Зато реализуется двумя функциями: qsort (из C-библиотеки) и lower_bound (есть в std::map, нет в C, легко написать самому, содрать с bsearch(3) лишь чуть подправив).

[ZX]