2013-03-06 173 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