c++11 匿名函数

  • Post author:
  • Post category:其他


本文仅是自己的理解,有问题,请指正,谢谢!

匿名函数,在c++中是使用Lambda表达式实现的。

格式为: [

捕获外部变量列表

] (参数列表) mutable ->返回值类型 { 函数体}

例如:

注意:如果没有参数,空的圆括号()可以省略.返回值也可以省略

例如以下几种书写方式:

[](int a, int b) { return a + b; } // 隐式返回类型
[](int & x) { ++x; }   // 没有return语句 -> lambda 函数的返回类型是'void'
[]() { ++global_x; }  // 没有参数,仅访问某个全局变量
[]{ ++global_x; }  // 没有参数,仅访问某个全局变量

  • [] 不截取任何变量
  • [&} 截取外部作用域中所有变量,并作为引用在函数体中使用
  • [=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用
  • [=, &foo]   截取外部作用域中所有变量,并拷贝一份在函数体中使用,但是对foo变量使用引用
  • [bar]   截取bar变量并且拷贝一份在函数体重使用,同时不截取其他变量
  • [this]            截取当前类中的this指针。如果已经使用了&或者=就默认添加此选项。

Lambda在STL中使用,书写上带来极大的方便。



版权声明:本文为esdhhh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。