我已经成功使用:
boost::algorithm::boyer_moore_search<const char *,const char *>( haystack, haystack_end, needle, needle_end )
大海捞针。现在我想使用 BM_search 对针进行不区分大小写的搜索。由于我的 haystack 很大,我的计划是将针转换为小写,并让 haystack 迭代器将 haystack 字符视为特殊类,其比较函数在比较之前将字母转换为小写。但是,我无法正确表达这一点。我正在努力:
class casechar {
public:
char ch;
// other stuff...it's not right, but I don't think the compiler is even getting this far
} ;
class caseiter : public std::iterator<random_access_iterator_tag,casechar> {
const casechar *ptr;
public:
// various iterator functions, but not enough of them, apparently!
} ;
boost::algorithm::boyer_moore_search<const caseiter,const char *>( HaYsTaCk, HaYsTaCk_EnD, needle, needle_end );
编译器(OSX 上的 g++)抱怨试图实例化 hash<casechar>,我猜是因为一些 BM 内部的东西。我迷失在模板<twisty_passages,all_different> 的迷宫中。我可以强加给某人一点方向吗?我怀疑我只需要在 casechar 和/或 caseiter 中提供某些实现,但我不知道哪些实现。
谢谢!