C ++ 17字符串搜索算法的比较

时间:2017-01-29 20:38:41

标签: c++ string algorithm c++17 string-search

C ++ 17添加了专门的字符串搜索算法:

Boyer–Moore–Horspool algorithm上引用维基百科:

  

它是Boyer-Moore字符串搜索算法的简化,它与Knuth-Morris-Pratt算法有关。该算法在时间上交换空间以便在随机文本上获得O(n)的平均情况复杂度,尽管在最坏的情况下它具有O(nm),其中模式的长度是m并且搜索的长度string是n。

问题:

结论

至少关于std::default_searcher的问题不在标记的副本(Which is a better string searching algorithm? Boyer-Moore or Boyer Moore Horspool?)中,并且似乎对答案感兴趣,为了完整起见,这是我的尝试:< / p>

  

问题: std :: default_searcher如何与这两种算法相匹配?是否有任何标准库实现没有实现它与天真的字符串比较(针对小字符串优化)?

根据documentation on cppreferencestd::default_searcher代表现有的C ++之前的17 std::search函数。

我认为标准没有强制执行,但如果这个功能并不总是作为强力搜索实现,我会感到惊讶。根据经验,至少Linux上提供的标准库确实将其实现为强力搜索(在__search中的stl_algo.h中实现)。

  

问题:除了测量之外,还有哪些指导方针可以决定什么是最好的?   什么时候应该在std :: boyer_moore_searcher上使用std :: boyer_moore_horspool_searcher?

不,没有好的经验法则。这在很大程度上取决于输入。

尝试两者并测量哪个更快。

0 个答案:

没有答案