lambda函数定义
lambda函数是C++11中的新特性,名称来自于lambda calculus(λ演算)。运用这个系统,你可以使用匿名函数,即无需给函数命名。
先让我们看一个例子
[ ] (int x) {return x%3 == 0 ;}
这个表达式等价于下面这个函数
bool f(int x) {
return x%3==0;
}
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即可。