1、lambda表达式是c++11引入的一种匿名函数的方式,它允许你在需要函数的地方内联的定义函数,而无需单独命名函数;
#include <iostream>using namespace std;bool compare(int a,int b)
{return a > b;
}int getMax(int a,int b,bool (*p)(int a,int b))
{if(p(a,b)){return a;}else{return b;}
}int main()
{int x = 10;int y = 20;int ret = getMax(x,y,[](int a,int b)->bool{return a > b ;});cout << ret << endl;ret = getMax(x,y,compare);cout << ret << endl;return 0;
}
2、参数捕获
#include <iostream>using namespace std;int main()
{int x = 10;int y = 30;int z = 5;int ret;//1、捕获参数不可修改,可自动捕获x,y的值,只读auto add = [x,y]()->int{return x+y;};ret = add();cout << ret<< endl;//2、捕获参数不可修改,= 可自动捕获x,y的值, 只读auto mul = [=]()->int{return x*y;};ret = mul();cout << ret<< endl;//3、捕获参数可修改,&是引用的方式相当于指针 可自动捕获x,y的值,且值可修改,可读可写auto muladd = [&]()->int{x = 20;return x*y*z;};ret = muladd();cout <<"ret="<< ret<<" x="<< x<<endl;return 0;
}