0

我不太了解 Lambda 表达式。我创建了一个包含结构“brute”的列表;

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

});

[&combo} 是我想要捕捉的。我有 3 个问题:“int i”是列表的迭代器吗?如何访问未解决列表中的成员?最后,我是否需要定义我的返回值应该是 char[]?

4

1 回答 1

3

std::for_each将期望一个一元谓词采用brute*or 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) { .... } );

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

所以,回答问题,

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

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

如示例所示

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

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

于 2013-03-06T21:48:25.990 回答