次のコードでは "2が見つかりました"だけを出力するはずですが、両方を出力します。 2つ目は、ベクトルの最初の3つの要素に4がないために発生しません。私はどこで間違いを犯したのですか?ベクトルの一部から値を正しく見つけるにはどうしたらいいですか?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> a = {1,2,3,4,5};
if(find(a.begin(),a.begin()+3,2) != a.end()) cout << "2 found" << endl;
if(find(a.begin(),a.begin()+3,4) != a.end()) cout << "4 found" << endl;
}
結果:
2 found
4 found
に変更
find(a.begin(),a.begin()+3,2) != a.end()
'。コードは '...!= a.begin()+ 3 ...'と言うべきです。 –@ n.m。私は、区間の右側が開いていると思って、3番目の要素で停止します。 – daydayup
@TonyDよろしくお願いします。それが何であるか分かりませんので 'a.end()'を返すことはできませんでした。 – NathanOliver