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

How do I correctly find a value from part of a vector?

本文关键字:一部分 向量      更新时间:2023-10-16

我期待下面的代码应该只打印出"找到 2",但它打印出两者。第二个不应该发生,因为 4 不在向量的前 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.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.end()代码应该比较一个... != a.begin() + 3...

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;
}