我想使用lambda函数找到向量v的元素v [0] [0] = 1 v [0] [1] = 2并找到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;
}



  错误:与“ operator ==”不匹配(操作数类型为“ std :: vector”
  和'const main()::)>')|


我不明白这个问题:vet [0]和n都是整数,因此应该定义operator ==。

最佳答案

我认为您打算使用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);}  );

关于c++ - 在 vector C++矩阵中找到的项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45652955/

10-11 18:16