Одно из использования макросов, которые унесли мой ум, было проверкой времени компиляции запросов SQL против DB.
, Как только Вы понимаете, у Вас есть полный язык под рукой во время компиляции, он открывает интересные новые перспективы. Который также означает, что можно выстрелить себе в ногу интересными новыми способами (как рендеринг компиляции, не восстанавливаемой, который может очень легко превратиться в кошмар отладки).
я искал способы реализовать заполнение клавишей Tab и не нашел простой ответ
Взгляд здесь . Это должно дать Вам довольно хорошую начальную точку.
, Что является основами, которые я должен знать о том, чтобы заставлять мое приложение поддерживать заполнение клавишей Tab
, необходимо быть знакомы со структурой данных Trie, поскольку это - структура общих данных, используемая для реализации заполнения клавишей Tab. Существует много учебных руководств, объясняющих это онлайн, ищет его.
Псевдокод (учитывая список строк):
Первый, сохраните каждую из букв строки в структуре данных Trie.
, когда пользователь поразил клавишу Tab:
(GeeksForGeeks), Учитывая префикс запроса, мы ищем все слова, имеющие этот запрос.
- Поиск данного запрос с помощью стандартного алгоритма поиска Trie.
- , Если сам префикс запроса не присутствует, возвратитесь-1 для указания на то же.
- , Если запрос присутствует и является концом слова в Trie, запросе печати. Это может, быстро проверенное наблюдение при последнем соответствии узлу имеет набор флага isEndWord. Мы используем этот флаг в Trie для маркировки конца узлов слова ради поиска.
- При последнем соответствии узлу запроса не имеет никаких детей, возвратиться.
- Еще рекурсивно печать все узлы под поддеревом последнего узла соответствия.