Lambda函数

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即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容