私はBulls &牛というゲームのコードを書いています。私はすでに1つのベクトルの値が(同じインデックスにある場合)同一であるかどうかを調べています。しかし、私はどのように2つのベクトルを移動し、1つの値が他のベクトルの他のインデックスの値にも一致するかどうかを調べるforループを書く方法がわかりません。助けていただければ幸いです。ありがとうございました!あるベクトルの値と別のベクトルの値が一致するかどうかを確認したい
答えて
は、単純なループない:両方のベクターは、長さNであり、これはN 比較を行う場合
vector<int> v1, v2;
//Initialize v1 and v2...
for (auto& i: v1) //Loop through each element of v1
for (auto& j: v2) //Same for v2
if (i == j)
std::cout << "Ok! They match!" << std::endl;
これはC++ 11の場合にのみ言及する必要があります。それ以外の場合は、autoを実際のタイプにする必要があります。 – Bettorun
強引アプローチは
for(auto& x1 : vec1)
for(auto& x2 : vec2)
if(x1 == x2)
return true;
return false;
あります発見されなかった場合、および平均して。
、かなりungoodあるO(N )、二次の時間です。あなただけセットで1つのベクトルのすべての値を置くことができ、より良いパフォーマンスを得るために
。次に、他のベクトルの各値をセットに対してチェックすることができます。 std::set
のために、各値のチェックは、ログ(N)、およびそのnは値をチェックしているあなたにO(nはログN)時間を与えます。 std::unordered_set
の場合、検査は本質的に一定時間であり、全体をO(n)に減らします。
しかし、少なくとも私が使っているg ++のバージョン(MinGW 5.1)では標準ライブラリの実装ではenum
の値をハッシュするサポートがないので、ハッシュ関数を指定する必要がありますコードを移植性のあるものにするための一般的なハッシュサポートが含まれます。
ので、
using Item = decltype(v1)::value_type;
std::set<Item> v1_values{ v1.begin(), v1.end() };
for(auto& x2 : v2)
if(v1_values.count(x2) > 0)
return true;
return false;
免責事項:コードでも、コンパイラによってちらっと見ていない、と私はcount
が、私は一般的にちょうど標準ライブラリのものを包むので、チェックするための最もエレガントな方法であるかどうかが不明です。
v1
またはv2
に値を追加するたびにそのようなセットを更新します。これはコードの複雑さを増し、これらのベクターを使用するものとは独立していません。私。より侵害的な解決策です。一般的に、複雑さを増すことでパフォーマンスを犠牲にします。
これはstd::find_first_ofの定義です。
- 1. あるベクトルの値のインデックスを別のベクトルで取得しますか?
- 2. ベクトルの長さが等しいかどうかを確認
- 3. Rのベクトルがシーケンシャルかどうかを確認しますか?
- 4. JSONレスポンスの値がHTML要素のデータ値と一致するかどうか確認してください
- 5. ベクトルがNaNとinfを含む別のベクトルと等しいかどうかを確認するにはどうすればよいですか?
- 6. あるベクトルの値を別のベクトルのインデックスに割り当てるか?
- 7. あるモデルのテーブル値が別のモデルのテーブル値と一致するかどうか確認してください
- 8. あるリストから別のリスト内のデータフレームと長さで一致するベクトル
- 9. オプションの値 'string?'の値値が空であるかどうかを確認するときにアンラップしない
- 10. 一般化された固有値と固有ベクトルのベクトル
- 11. ベクトルの値の変更を確認する
- 12. 私はどのように値のベクトルを別のベクトルにマップするのですか?
- 13. 辞書の値が条件と一致するかどうか確認してください
- 14. 値がmongoengineの他の値と一致することを確認
- 15. ベクトルの一部から値を正しく見つけるにはどうしたらいいですか?
- 16. STLベクトルの中にC++ STLベクトルがあるかどうかを調べる
- 17. リスト内の値が等しい値かどうかを確認する〜Python
- 18. 値がLINQのコレクション内にあるかどうか確認
- 19. enumがパターンと一致しないかどうかを確認する方法?
- 20. レスポンスの値を確認する方法プロパティの値と一致する
- 21. ベクトルがRの一部であるかどうかをチェックする方法
- 22. あるベクトルが別のベクトルのサブセットであるかどうかを効率的に判別する方法はありますか?
- 23. ペアの空のベクトルを別のベクトルにどのように戻しますか?
- 24. データフレームをベクトルと比較し、一致した値の新しい変数を作成する
- 25. 入力値に値があるかどうかを確認する
- 26. mousedownとif文が一致するかどうかを確認しますか?
- 27. これは**正しいベクトルのベクトルですか?すべてのベクトルのすべての値をどのように出力するのですか?
- 28. PHPがパスワードが一致するかどうかを確認し、一致する場合はそのデータを
- 29. 値が数値かどうかを確認する方法
- 30. 条件を満たす値があるかどうかを確認する
*ソースコード*の入力をお願いします。 –
'' std :: find() '](http://en.cppreference.com/w/cpp/algorithm/find)を使って' std :: vector'(または他のほとんどのコンテナ)の値を見つけることができます)。 –