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;
}
?
?