2012-02-06 88 views
3

有許多字符串匹配算法可以用於找到在一個大的文本的模式(字符串),像博耶-摩爾,阿霍Corasick等在std :: search中使用什麼算法?

哪個串匹配算法應用到執行用C std::search功能++ ?

+0

@Anubis先生 - 我認爲Adban正在談論算法'std :: search',它在另一個任意序列內搜索任意序列。 – templatetypedef 2012-02-06 04:11:01

+0

@templatetypedef對不起,只是在想爲什麼不使用'std :: string :: find',這是專門爲字符串製作的。 – 2012-02-06 04:13:25

回答

10

根據該C++ 03 ISO標準,§ 25.1.9/3,的std::search複雜是

複雜度:在大多數(last1 - first1)*(last2 - first2)的應用程序相應的謂詞

這是實現此算法的唯一要求。 ISO規範沒有規定應該在這裏使用哪種算法,它完全依賴於實現。這些時間範圍允許使用原始序列搜索算法Knuth-Morris-PrattBoyer-MooreRabin-Karp。要知道正在使用哪一個,你應該爲你使用的任何版本的標準庫提取文檔。也就是說,你不能指望它是便攜式的。我的猜測是,大多數實現只是使用樸素匹配算法,因爲最糟糕的情況通常不會在實踐中出現。

希望這會有所幫助!

相關問題