我想找到元素v [0] [0] = 1 v [0] [1] = 2的向量v,使用lambda函数并找到stl。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
vector<vector<int>> v(3);
v[0].resize(2);
v[1].resize(2);
v[2].resize(2);
int n=1, m = 2;
v[0][0]=1; v[0][1]=2;
v[1][0]=0; v[1][1]=0;
v[2][0]=2; v[2][1]=3;
auto it = find(v.begin(), v.end(), [=]( vector<int> vet) {return (vet[0] == n && vet[1] == m);} );
return 0;
}
错误:不匹配&#39;运营商==&#39; (操作数类型是&#39; std :: vector&#39; 和&#39; const main()::)&gt;&#39;)|
我不明白这个问题:vet [0]和n都是整数所以应该定义operator ==。
答案 0 :(得分:2)
我认为您打算使用find_if
。此外,语法应该稍微改变一下。此外,m
和n
是lambda函数应作为参数接收的参数。所以将代码更改为:
auto it = find_if(v.begin(), v.end(), [n, m] (const vector<int>& vet) {return (vet[0] == n && vet[1] == m);} );