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指针,必须显式列举在[]中,除非使用[=]或者[&]的设定。