我不太了解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 []?
答案 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 []吗?
返回值被忽略。如果你需要它,那么你需要另一种算法。