寻找std :: boyer_moore_searcher

时间:2019-06-19 15:19:35

标签: c++ stl std boyer-moore

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

  1. 在哪里?我正在使用Visual Studio 2019,但它报告“名称空间std没有成员boyer_moore_searcher”
  2. Boyer Moore算法的问题之一是,对于Unicode字符,跳转表必须很大。谁能告诉我boyer_moore_searcher类如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

  

Boyer Moore算法的问题之一是,对于Unicode字符,跳转表必须很大。

这并不是真正的答案,但是评论太久了。

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

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

答案 1 :(得分:0)

这是第一个问题的答案:

  

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

boyer_moore_searcher是c ++ 17中引入的,因此要进行编译,您需要启用c ++ 17选项: MSVC Compile选项/std:c++17或:

  

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