本文仅是自己的理解,有问题,请指正,谢谢!
匿名函数,在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 版权协议,转载请附上原文出处链接和本声明。