C++ 函数之匿名函数
匿名函数又称Lambda 函数、Lambda 表达式。基本形式为:
[capture](parameters)->return-type{body}
[capture]:捕捉列表。
[]:匿名函数沒有定义任何变量。
[=]:所有使用到的外部变量都为值传递。
[&]:所有使用到的外部变量都为引用传递。
[x, &y]:x为值传递(默认),y为引用传递。
[&, x]:x为值传递。其余变量为引用传递。
[=, &z]:z为引用传递。其余变量为值传递。
(parameters):参数列表。 若没有参数,可以省略()。
->return_type:返回类型。 若没有返回值,可以省略->。
{body}:函数体 除了可以使用捕捉列表中的参数,也可以使用调用函数里的参数。
比如判断两个整数大小,并返回较大的值。下面分别展示了常见操作和匿名函数的示例:
int max(int a,int b)
{
return a > b ? a : b;
}
int main()
{
int num1 = 13;
int num2 = 3;
//常见操作,调用函数
std::cout << max(num1,num2) << std::endl;
//匿名函数1:创建函数,并调用
auto b = [&](int a,int b)->int{return a> b? a: b;};
std::cout << b(num1,num2) << std::endl;
//匿名函数2:直接使用调用函数定义域内的变量
auto c = [&]()->int{return num1 > num2 ? num1: num2;};
std::cout << c() << std::endl;
}