C++ で 2 つの範囲を比較する標準的な方法はありますか? 質問する

C++ で 2 つの範囲を比較する標準的な方法はありますか? 質問する

範囲とは、反復子のペアを意味します。疑似 C++ では次のようになります。

std::vector<int> v1 = { 1, 2, 3, 4, 5 };
std::vector<int> v2 = { 2, 3, 4 };
if( std::compare_range( v1.begin() + 1, v1.end() - 1, v2.begin(), v2.end() ) {
    std::cout << "Alright\n";
}

compare_rangeもちろん、私が探している機能です。

免責事項: これは書くのがかなり簡単な関数であることはわかっています。しかし、すべてのプログラマーと同様に、私は怠け者になるように努めています ;-)

ベストアンサー1

std::equal探している関数テンプレートです。

if (std::equal(v1.begin() + 1, v1.end() - 1, v2.begin())
{
    std::cout << "Alright\n";
}

引数は 4 つではなく 3 つだけであることに注意してくださいstd::equal

おすすめ記事