В поисках std :: boyer_moore_searcher - PullRequest
1 голос
/ 19 июня 2019

Я хотел бы попробовать использовать класс std :: boyer_moore_searcher . Но я столкнулся с двумя вопросами:

  1. Где это? Я использую Visual Studio 2019, но он сообщает "Пространство имен std не имеет члена boyer_moore_searcher" .
  2. Одна из проблем алгоритма Бойера-Мура заключается в том, что таблица переходов должна быть очень большой для символов Юникода. Может кто-нибудь сказать мне, как класс boyer_moore_searcher справляется с этим?

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Одна из проблем алгоритма Бойера-Мура заключается в том, что таблица переходов должна быть очень большой для символов Юникода

Это не совсем ответ, но слишком длинный комментарий.

В «таблице пропусков» Бойера-Мура должна быть запись для каждого «персонажа» в шаблоне, который вы ищете.

Для char самый простой (и самый быстрый) способ сделать это - иметь массив из 256 элементов (и именно так алгоритм BM был описан в оригинальных статьях).Но это не требование;просто деталь реализации.

0 голосов
/ 19 июня 2019

Это ответ на первый вопрос:

Где это?Я использую Visual Studio 2019, но он сообщает, что "пространство имен std не имеет члена boyer_moore_searcher".

boyer_moore_searcher введено в c ++ 17, поэтому для компиляции вам нужно включить опцию c ++ 17: MSVC Compile опция /std:c++17 или:

Propertie-> C / C ++ -> Все параметры-> Стандарт языка C ++

.

...