2013-03-06 217 views
0

我不太瞭解Lambda表達式。 我創建了一個列表,它包含一個struct「brute」;使用C++ Lambda表達式

typedef struct brute{ 
int entry; 
string secWord; 
string secHex; 
}decrypt; 

typedef list<brute*>Unsolved; 

然後我嘗試使用for_each遍歷列表。

char combo[] = {'a','a','b','c'); 
std::for_each(unsolved.begin(), unsolved.end(),[&combo](int i) 
{ 

}); 

[&組合}是我試圖捕獲的。 我有3個問題:是「int i」列表的迭代器嗎?我如何訪問我的未解決列表中的成員?最後,我是否需要定義我的返回值應該是char []?

回答

3

std::for_each指望一元謂詞需要brute*brute*&,形式

T foo(brute*); 

會做了什麼。它忽略了返回值。所以,你的電話for_each使用Lambda可能有這樣的形式:

std::array<char, 4> combo{'a','a','b','c'}; 
std::for_each(unsolved.begin(), unsolved.end(),[&combo](brute*& b) { .... }); 

,我已經使用了std::array因爲它具有簡單的複製/賦值語義比一個普通陣列。

因此,要回答這些問題,

是 「int i」 表示列表中的迭代器?

沒有

如何訪問的成員就是我的未解名單內?

如示例

最後我需要定義我的返回值應該是一個char []中?

返回值被忽略。如果你需要它,那麼你需要另一種算法。

+0

非常感謝。這對我幫助很大 – user1665569 2013-03-06 21:57:30