2016-07-12 3 views
0

std::vectorコンテナに特定の値(パターン)が存在するかどうかを調べる方法はありますか?std :: vectorでパターンを見つける方法

のは、私は、このデータのコンテナがあるとしましょう:

std::vector<int> data { 0x00, 0xff, 0x00, 0x11, 0x12, 0x13, 0x14, 0x15 }; 

をこのパターンは、他のstd::vectorコンテナ用いて説明:

std::vector<int> pattern { 0x00, 0xff, 0x00 }; 

を私がしたい:

  • ブール値をそのパターンの存在を表す。

  • 最終的に、パターンが始まるインデックス。

+1

おそらく、lambdaと 'std :: find()'の何かがあります。 –

+0

入力と希望出力を表示してください。 –

+1

@VaibhavBajaj入力と希望出力が与えられましたか? – CJxD

答えて

10

std::searchを使用できます。ここで

#include <iostream> 
#include <vector> 
#include <algorithm> 

int main() { 
    std::vector<int> data {0x00, 0xff, 0x00, 0x11, 0x12, 0x13, 0x14, 0x15}; 
    std::vector<int> pattern {0x00, 0xff, 0x00}; 

    auto res = std::search(std::begin(data), std::end(data), std::begin(pattern), std::end(pattern)); 
    if(res == std::end(data)) { 
     std::cout << "Couldn't find it.\n"; 
    } else { 
     std::cout << "Found it.\n"; 
    } 
} 

resは、列の先頭を指すイテレータです。それが干し草の終わりに等しいならば、針はありませんでした。

関連する問題