我希望以下代码只打印出来#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;
}
答案 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;
}