自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++ kmp算法模板代碼解讀

開發(fā) 后端 算法
我們在這篇文章中主要為大家詳細(xì)介紹了C++ kmp算法模板的相關(guān)應(yīng)用方法,希望大家可以從這段代碼中學(xué)到更多的應(yīng)用技巧。

C++編程語言中的模板應(yīng)用是一個比較復(fù)雜的應(yīng)用技術(shù),我們今天就先從C++ kmp算法模板的基本應(yīng)用開始學(xué)習(xí),從而加深我們對這方面知識的認(rèn)識程度,方便將來的應(yīng)用,提高編程效率。

在使用的時候加上這兩行代碼就行了

  1. #include < vector>   
  2. using namespace std; 

 

C++ kmp算法模板參數(shù)說明 #t#

const T *source 待匹配的字符串

TL sourceLen 待匹配字符串的長度

const T *pattern 模式串

TL 模式串長度

C++ kmp算法模板代碼示例:

 

  1. template < class T,class TL>   
  2. inline int kmpmatch(const T *source,TL sourceLen,
    const T *pattern,TL patternLen)   
  3. {   
  4. vector< int> next;   
  5. for ( int i = 0; i <  patternLen ; i ++ )   
  6. next.push_back(0);   
  7. next[0] = -1;   
  8. for( int i = 1 ; i <  patternLen ; i ++ )   
  9. {   
  10. int j = next[i - 1];   
  11. while ( (pattern[i] != pattern[i + 1])&& (j >= 0))   
  12. {   
  13. j = next[j];   
  14. }   
  15. if ( pattern[i] == pattern[j + 1])   
  16. {   
  17. next[i] = j + 1;   
  18. }   
  19. else   
  20. {   
  21. next[i] = -1;   
  22. }   
  23. }   
  24. int i = 0;   
  25. int j = 0;   
  26. while (( i <  sourceLen ) && ( j <  patternLen ))   
  27. {   
  28. if ( source[i] == pattern[j] )   
  29. {   
  30. i ++;   
  31. j ++;   
  32. }   
  33. else if ( j == 0 )   
  34. {   
  35. i ++;   
  36. }   
  37. else   
  38. {   
  39. j = next[j - 1 ] + 1;   
  40. }   
  41. }   
  42. if ( j >= patternLen )   
  43. {   
  44. if ( !next.empty() )   
  45. next.clear();   
  46. return i - patternLen ;   
  47. }   
  48. else   
  49. {   
  50. if ( !next.empty() )   
  51. next.clear();   
  52. return -1;   
  53. }   

 

以上就是對C++ kmp算法模板的相關(guān)介紹。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-05 17:58:32

C++鏈棧模板

2010-02-03 15:58:51

C++ timer

2010-02-04 09:33:08

C++指針重載

2023-12-06 13:48:00

C++代碼

2010-02-04 16:07:39

C++回調(diào)函數(shù)

2010-02-06 09:46:46

C++單向鏈表

2010-02-04 13:45:36

C++類模板

2010-01-21 14:07:14

CC++聲明

2010-02-01 14:26:50

C++讀寫文本文件

2010-02-02 17:27:16

C++連接MySqL數(shù)

2023-12-18 11:15:03

2010-02-01 11:22:09

C++虛函數(shù)

2010-02-05 16:46:58

C++ TinyXml

2023-12-13 10:51:49

C++函數(shù)模板編程

2010-02-05 11:23:01

C++聲明語法

2010-01-28 14:04:35

C++鏈表

2010-02-03 17:42:33

C++模板參數(shù)

2010-01-26 13:55:07

C++標(biāo)準(zhǔn)模板庫

2023-10-30 10:29:50

C++最小二乘法

2010-02-02 17:39:31

C++構(gòu)造函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號