2017-08-12 46 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」對於這個問題不重要,我已經刪除它。 –