C++ kmp アルゴリズム テンプレート コード解釈

C++ kmp アルゴリズム テンプレート コード解釈

C++ プログラミング言語でのテンプレートの適用は、比較的複雑な適用技術です。今日は、C++ kmp アルゴリズム テンプレートの基本的な適用から学習して、この知識の理解を深め、将来の適用を容易にし、プログラミングの効率を向上させます。

使用時に次の2行のコードを追加するだけです

  1. #include <  ベクター>    
  2. 名前空間 std を使用します。

C++ kmp アルゴリズム テンプレート パラメータの説明#t#

const T *一致するソース文字列

TL sourceLen 一致させる文字列の長さ

const T *パターン パターン文字列

TLパターン文字列の長さ

C++ kmp アルゴリズム テンプレート コード例:

  1. テンプレート<  クラスT、クラス TL >    
  2. インライン int kmpmatch(const T *source,TL sourceLen,
    const T *パターン、TL パターン長さ)
  3. {
  4. ベクトル<   int >次;
  5. ( int i = 0 ; i <   パターン長さ; i++)
  6. 次へ.push_back(0);
  7. 次[0] = -1;
  8. for( int i = 1 ; i <   パターン長さ; i++)
  9. {
  10. int j =次の[i - 1];
  11. while ( (パターン[i] != パターン[i + 1])&& (j > = 0))
  12. {
  13. j =[j];
  14. }
  15. (パターン[i] == パターン[j + 1])の場合
  16. {
  17. 次[i] = j + 1;
  18. }
  19. それ以外
  20. {
  21. 次[i] = -1;
  22. }
  23. }
  24. 整数i = 0 ;
  25. 整数j = 0 ;
  26. 一方、(( i <   ソース長さ) && ( j <   パターン長さ))
  27. {
  28. if ( ソース[i] == パターン[j] )
  29. {
  30. 私は++;
  31. j++;
  32. }
  33. それ以外の場合 ( j == 0 )
  34. {
  35. 私は++;
  36. }
  37. それ以外
  38. {
  39. j =次の[j - 1 ] + 1;
  40. }
  41. }
  42. (j > = パターン長)の場合
  43. {
  44. if ( !next.empty() )
  45. 次へ.clear();
  46. i - パターン長を返します。
  47. }
  48. それ以外
  49. {
  50. if ( !next.empty() )
  51. 次へ.clear();
  52. -1 を返します。
  53. }
  54. }

上記は、C++ kmp アルゴリズム テンプレートの紹介です。

<<:  Microsoft IE8 の「ランダム ブラウザ選択」アルゴリズムはランダムではなく、不利な状況に陥っています。

>>:  VB.NET 暗号化アルゴリズムの基本概念の分析

ブログ    
ブログ    

推薦する

...

...

JVMの基本的なガベージコレクションアルゴリズムについて

この記事は JavaEye ブログからの引用であり、元のタイトルは「JVM チューニングの概要 (パ...

Keras でカスタム損失関数を作成する方法は?

[[284375]] UnsplashのDhruv Deshmukhによる写真損失関数を使用して、...

2030年までにAI/自動化によって消滅する6つの技術職

翻訳者 | ジン・ヤンレビュー | Chonglou現在、人工知能と自動化は急速な発展段階に入ってお...

スケッチが本物の顔に変わる? AI: はい、草はいくらでも大丈夫です。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

大規模ディープラーニングツールの最新動向を詳しく見る

Panos Labropoulos 博士は、Bright Computing のシニア サポート エ...

凌創志新は、AI商業化の閉ループを作成するための最初のデータアノテーションビジネスを立ち上げました

アジアのビッグデータおよび人工知能企業である凌創志信は、同社の伝統的なリテイン事業であるデータラベリ...

新しいNeRF技術は、ビデオを簡単に制御できる3Dモデルに変換できます。

翻訳者 |ブガッティレビュー | Chonglou人間の動きが複雑で、環境によって見た目が微妙に異な...

人工知能は人類の終焉をもたらすのでしょうか? AIに対する5つの実存的脅威

私たちは現在、この地球上で最も知的な種であり、他のすべての生命は生き続けるために私たちの善意に依存し...

...

顔スキャンの時代、顔認識起業家の進むべき道

[[205201]] 9月26日、北京市内の中学校で、顔認証システムで本人確認がされた受験者が模擬試...

データが新たな石油なら、AIは新たな核兵器だ

人工知能 (AI) とビッグデータは以前から存在しており、さまざまな分野での応用により、世界中の組織...