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