美文网首页
Lambda函数

Lambda函数

作者: 食梦狸猫 | 来源:发表于2019-01-06 15:25 被阅读0次

    一个Lambda函数例子:

    int main()

    {

        int girls = 3,boys=4;

        auto totalChild = [] (int x, int y)->int {return x+y;};

        return totalChild(girls,boys);

    }

    此lambda函数接受两个参数,x和y,然后返回结果为和。lambda函数的语法定义为:    [捕捉列表](参数) 修饰符->返回类型{函数体},最简单的lambda函数声明为[]{};

    而lambda函数与普通函数最大的区别在于,lambda函数可以通过捕捉列表访问上下文中的数据,以及数据的使用方式(按值传递或者引用传递)

    重写上例中的lambda函数: auto totalChild = [girls,&boys]()->int{ return  girls+boys;};此时按值传递的方式捕捉变量girls,按引用传递方式捕捉boys。

    捕捉项有如下几种形式:

    [var]表示按值捕捉变量var

    [=]表示按值捕捉所有父作用域(包括this)的变量

    [&var]表示按引用方式捕捉变量var

    [&]表示引用传递父作用域的变量(this)

    [this]表示按值传递方式捕捉当前指针

    再次重写上诉lambda表达式:auto totalChild = [=]()->int{return girls + boys;};

    此时boys和girls都按值传递了

    lambda 与 仿函数

    在c++11中,lambda可以视作为仿函数的一种等价形式。

    相关文章

      网友评论

          本文标题:Lambda函数

          本文链接:https://www.haomeiwen.com/subject/mmesrqtx.html