Lambda 表达式
Lambda 表达式即是匿名函数,这项功能在 C++11 标准中提供了支持。Lambda 表达式将函数作为对象,并可以像对象一样使用,例如赋予变量和作为参数传递。Lambda 表达式的定义形式为:[外部变量捕获](参数列表)->返回值类型 { 函数体 }
。以下是一个 Lambda 表达式的示例:[](int x, int y)->int { return x + y; }
。当需要使用 Lambda 表达式作用域以外的变量时,可以设定外部变量捕获来将外部变量传入 Lambda 表达式中,例如:[z](int x, int y)->int { return x + y + z; }
。
对于外部变量的捕获,可以使用以下几种设定:
[]
,不捕获任何变量,使用任何外部变量均会导致错误。[a, &b]
,变量 a 以传值方式传入,变量 b 以引用方式传入。[&]
,所有外部变量均以引用方式传入。[=]
,所有外部变量均以传值方式传入。[&, a]
,变量 a 以传值方式传入,其他外部变量都以引用方式传入。[=, &a]
,变量 a 以引用方式传入,其他外部变量都以传值方式传入。- 对于
this
指针,必须显式列举在[]
中,除非使用[=]
或者[&]
的设定。