1

我想尝试使用std::boyer_moore_searcher类。但是我遇到了两个问题:

  1. 它在哪里?我正在使用 Visual Studio 2019,但它报告"namespace std has no member boyer_moore_searcher"
  2. Boyer Moore 算法的问题之一是对于 Unicode 字符,跳转表必须非常大。谁能告诉我boyer_moore_searcher班级是如何处理这个问题的?
4

2 回答 2

1

Boyer Moore 算法的问题之一是 Unicode 字符的跳转表必须非常大

这不是一个真正的答案,但评论太长了。

Boyer-Moore 的“跳过表”需要为您正在搜索的模式中的每个“字符”提供一个条目。

对于char,最简单(也是最快)的方法是拥有一个 256 元素的数组(这就是原始论文中 BM 算法的描述方式)。但这不是要求;只是一个实现细节。

于 2019-06-19T15:46:26.087 回答
0

这是第一个问题的答案:

它在哪里?我正在使用 Visual Studio 2019,但它报告“命名空间 std 没有成员 boyer_moore_searcher”。

boyer_moore_searcher在 c++17 中引入,所以要编译你需要启用 c++17 选项: MSVC 编译选项/std:c++17或:

属性->C/C++->所有选项->C++语言标准

.

于 2019-06-19T16:27:53.317 回答