如何从向量的一部分正确找到值?

时间:2016-04-26 03:01:53

标签: c++ vector

我希望以下代码只打印出来#34; 2找到"但是它打印出两者。第二个不应该发生,因为4不在向量的前3个元素中。我在哪里弄错了?

enter code here

结果:

#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 个答案:

答案 0 :(得分:3)

如果找不到值,

find会返回您传递的结束/“最后”值,在这种情况下,不是 a.end()。代码应该比较la ... != a.begin() + 3...

答案 1 :(得分:1)

find(a.begin(),a.begin()+3,2) != a.end()更改为find(a.begin(),a.begin()+3,2) != a.begin()+3

#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.begin()+3) cout << "2 found" << endl;
    if(find(a.begin(),a.begin()+3,4) != a.begin()+3) cout << "4 found" << endl;

}