lambda函数或者匿名函数
函数的作用:在某种环境下,如果需要把一个函数作为参数给出,这时候lambda函数可以作为“动态”给出一个快捷的函数,而不是正式定义函数。
lambda函数语法:
[闭包](参数){语句组}
举一个简单的lambda函数的例子,会比较好理解:
[5](int a,int b){return a+b;}
这个函数有两个整型参数并返回他们的值,但是他的结果是a+b+5;
mutable关键字:
语法:
[闭包](参数)mutable ->返回类型
mutable关键字可以被lambda函数用来表明按值捕获的变量是可以改变的,虽然只在lambda函数内作为临时值来改变。
接下来举一个例子:
函数返回lambda函数,两个整数参数并返回一个int:
1 #include<functional>
2 #include<iostream>
3 using namespace std;
4
5 function<int(int,int)>get_fun()
6 {
7 int n=10;
8 return [n](int a,int b)
9 {return a+b+n;};
10 }
11
12 int main()
13 {
14 auto f=get_fun(); //获取lambda函数
15 cout<<f(1,2)<<endl; //返回结果13
16 }