在向量C ++的矩阵中查找条目

时间:2017-08-12 17:18:58

标签: c++ function lambda stl find

我想找到元素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 ==。

1 个答案:

答案 0 :(得分:2)

我认为您打算使用find_if。此外,语法应该稍微改变一下。此外,mn是lambda函数应作为参数接收的参数。所以将代码更改为:

auto it = find_if(v.begin(), v.end(), [n, m] (const vector<int>& vet) {return (vet[0] == n && vet[1] == m);}  );