使用C++ Lambda表达式
问题描述:
我不太了解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 []?
答
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 []中?
返回值被忽略。如果你需要它,那么你需要另一种算法。
非常感谢。这对我帮助很大 – user1665569 2013-03-06 21:57:30