Я пишу класс с использованием Qt, который должен импортировать словарь, который будет использоваться для поиска команды и построения предложения команды. Команды расположены иерархически и имеют соответствующий шестнадцатеричный ключ и определение значения. Для наглядности это может выглядеть так:
01 : Volume
| - 01 : Step : 00=Down, 01=Up
| - 02 : Set : ceil(255/100 * x)
02 : Power
| - 01 : Power : 00=Off, 01=On
| - 02 : Sleep : ...etc
Я хочу загрузить этот словарь, а затем найти его для «Volume / Set / 50» и вернуть командное предложение «01 02 80» или найти «01 02 80» и вернуть «Volume / Set / 50». . "
Реальная реализация немного сложнее и имеет команды на разных уровнях в древовидной структуре и может включать любое количество и комбинацию команд с разных уровней в одном предложении.
Edit:
Комментарий, предоставленный Владимиром ниже, вводит понятие (Trie), с которым я не был знаком. Это может быть лучшая реализация для этого конкретного сценария, но я должен исследовать это еще немного. Я все еще заинтересован в ответе на мой оригинальный вопрос (с добавлением Trie):
Каковы преимущества и недостатки использования каждого из этих методов для этой реализации?
- Модель дерева Qt
- Вложенные карты
- Trie
Оригинальный вопрос: (для контекста)
Может быть, модель дерева Qt, вложенные карты или другие средства лучше подходят для хранения словаря? Я понимаю, что «лучше» может быть субъективным, но я хотел бы знать компромиссы.
Я уже строю модель дерева Qt для отображения некоторых других данных в QTreeView, чтобы код уже существовал и мог легко использоваться. Будет ли древовидная модель более гибкой при загрузке словарей с различными структурами? Есть лучший способ сделать это? или, может быть, стандартный шаблон дизайна?