使用c ++ Lambda表达式

时间:2013-03-06 21:44:04

标签: c++ list c++11 lambda

我不太了解Lambda的表达方式。 我创建了一个列表,其中包含一个结构" brute&#34 ;;

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 )
{

});

[&amp; combo}是我试图捕捉的内容。 我有3个问题:是&#34; int i&#34;列表的迭代器?如何访问未解决的列表中的成员?最后我需要定义我的返回值应该是char []?

1 个答案:

答案 0 :(得分:3)

std::for_each会发出一个带有brute*brute*&的一元谓词,其形式为

T foo(brute*);

会这样做。它忽略了返回值。因此,使用lambda的for_each调用可能具有以下形式:

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

我使用std::array,因为它具有比普通数组更简单的复制/赋值语义。

所以,回答问题,

  

是“int i”列表的迭代器吗?

没有

  

如何访问未解析列表中的成员?

如示例所示

  

最后我需要定义我的返回值应该是char []吗?

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