2017-08-12 49 views
0

我想找到元v的矩阵中的条目[0] [0] = 1体积[0] [1] =与使用lambda函数的向量v的2并找到STL的。查找的向量C++

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

error: no match for 'operator==' (operand types are 'std::vector' and 'const main()::)>')|

我不理解该问题:两者兽医[0]和n是这样的运算符==,应定义的整数。

+1

我认为您使用的算法错误...应该是find_if,除非它来自#include“algoritmo.h”,我们不知道内容的... – Borgleader

回答

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);} ); 
+2

'矢量 vet'应该是'const的载体&vet'(IMO) – Borgleader

+0

是啊,那是更好@Borgleader,谢谢! – gsamaras

+1

#include“algoritmo.h”对于这个问题不重要,我已经删除它。 –