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 暗号化アルゴリズムの基本概念の分析

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

...

中国は2022年に耐量子暗号アルゴリズムを開発し、2025年に実装予定

[[248782]]量子コンピュータが実用化されるまでにはしばらく時間がかかるだろうが、国際的な暗号...

...

AIはビデオを流暢に解釈できますか? Vista-LLaMAはこの「錯覚」の問題を解決します

近年、GPT、GLM、LLaMAなどの大規模言語モデルは自然言語処理の分野で大きな進歩を遂げており、...

MITとHKUは、Transformerを超える精度を持つ物理モデルに基づく視覚推論フレームワークを提案

[[437809]]動的視覚推論、特にオブジェクト間の物理的な関係についての推論は、コンピューター ...

JVMシリーズ(3):GCアルゴリズムガベージコレクター

[[204469]]概要ガベージコレクションは、通常「GC」と呼ばれます。1960年にMITのLis...

Python 実用コード - 無限分類ツリー構造生成アルゴリズム

バックエンド開発者にとっては、無限レベルの分類に強い印象を受けたのではないでしょうか。最初はかなり時...

「クローズドループ」に向けての運転 | LMDrive: LLM に基づく初のクローズドループ エンドツーエンド自動運転

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

ハイブリッドAIは企業がデータの価値を掘り出すための好ましい方法である

人工知能については、誰もがよくご存知だと思います。実際、人工知能には幅広い知識が含まれており、さまざ...

Patronus AI が LLM に懸念すべきセキュリティ上の欠陥を発見

自動評価および安全性プラットフォームである Patronus AI は、大規模言語モデル (LLM)...

GTA5をプレイしていますか?インテルの新しいモデルは3Dレンダリングをリアルな画像に変換します

GTA5 は古典的な 3D アドベンチャー ゲームであり、そのスタイルは次のとおりです。写真は現実に...

3万回以上の地震訓練を実施した後、彼らは揺れの強さを素早く予測する新しい方法を発見した。

[[396585]]ビッグデータダイジェスト制作編纂者:朱克進DeepShake ネットワークのト...

...