在std :: search中使用了什么算法?

Aan*_*Aan 3 c++ string algorithm pattern-matching string-matching

有许多字符串匹配算法可用于在大文本中查找模式(字符串),如Boyer-Moore,Aho-Corasick等.

std::search在C++中应用哪种字符串匹配算法来实现函数?

tem*_*def 10

根据C++ 03 ISO标准,§25.1.9/ 3,复杂性std::search

复杂性:对应谓词的最多(last1 - first1)*(last2 - first2)应用程序

这是实现此算法的唯一要求.ISO规范没有规定这里应该使用哪种算法,而且它完全依赖于实现.这些时间限制允许使用朴素序列搜索算法,Knuth-Morris-Pratt,Boyer-MooreRabin-Karp.要知道正在使用哪一个,您应该提取您正在使用的标准库的任何版本的文档.也就是说,你不能指望它是便携式的.我的猜测是大多数实现只使用朴素匹配算法,因为最坏的情况通常不会在实践中出现.

希望这可以帮助!