でfind_if使用して、このコードは、常に私は参照することにより、ラムダパラメータを渡そうとしました falseを返すと私は同じ結果 を持っていた任意の先端くださいif
であなたの条件でベクトルオブジェクト
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(5);
for (int x : v1)
{
auto it = find_if(v1.begin(), v1.end(), [x](int y){ return x == y; });
if (it != v1.end())
return false;
return true;
}
なぜあなたはそれが本当であると思いますか?デバッガを使用する – RiaD
ここで何をしているのか少し考えてみてください。最初の反復では、 'x'は' 1'に等しくなります。そして、次の反復 'x'は' 2'となり、*も*見つかるでしょう。等々。ベクトル内にあるため、ベクトル内のすべての値が検出されます。値が見つかった場合は 'false'を返します。あなたは重複をチェックしていますか?その後、あなたのアルゴリズムを再考する必要があります。 –
はい重複の有無を確認しています この機能を初めて使うときは、この機能を使うのを手伝ってください –