【问题标题】:Using c++ Lambda Expression使用 c++ Lambda 表达式
【发布时间】:2013-03-06 21:44:03
【问题描述】:

我不太了解 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[] 吗?

【问题讨论】:

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


    【解决方案1】:

    std::for_each 将期望一个一元谓词,它采用 brute*brute*&amp;,某种形式

    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[] 吗?

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

    【讨论】:

    • 非常感谢。这对我帮助很大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2015-12-23
    相关资源
    最近更新 更多