Lambda函数

作者: iamsonormal2333 | 来源:发表于2016-10-30 23:58 被阅读184次

    lambda函数定义

    lambda函数是C++11中的新特性,名称来自于lambda calculus(λ演算)。运用这个系统,你可以使用匿名函数,即无需给函数命名。
    先让我们看一个例子

      [ ] (int x)  {return x%3 == 0 ;}
    

    这个表达式等价于下面这个函数

      bool f(int x) {
        return x%3==0;
      }
    
    lambda 的组成部分lambda 的组成部分

    1.Lambda表达式的引入标志,在‘[]’里面可以填入‘=’或‘&’表示该lambda表达式“捕获”(lambda表达式在一定的scope可以访问的数据)的数据时以什么方式捕获的,‘&’表示一引用的方式;‘=’表明以值传递的方式捕获,除非专门指出。
    2.Lambda表达式的参数列表
    3.Mutable 标识
    4.异常标识
    5.返回值
    6.“函数”体,也就是lambda表达式需要进行的实际操作
    其中,lambda函数没有声明返回值,返回类型是根据返回值的推断得到的。
    仅当lambda表达式完全由一条返回语句组成时,自动类型推断才管用,否则,英国使用C++11新增的返回类型后置语法

      [ ](double x)->double {int y=x; return x-y;}
    

    为何要使用lambda

    当函数定义在使用范围附近的时候,比较便于修改和查阅参数。从这个角度看,lambda是一个理想的选择。因为它的定义和使用是在同一个地方进行的。从简介角度看,函数的代码较繁琐,而且相同的lambda函数可以只写一次

      auto f = [ ] (int x) {return x%3==0;}
      bool result = f(5);
    

    使用时直接调用f即可。

    相关文章

      网友评论

        本文标题:Lambda函数

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