正在加载中...
C++ Lambda表达式
C++ Lambda表达式
简介
Lambda 表达式是 C++11 引入的一个特性,它允许定义匿名(无名)函数或闭包。这在 STL 算法、并发编程以及需要临时计算或局部函数的场合特别有用。
基础语法
Lambda 表达式的完全语法是如下的形式:
[capture](parameter_list) mutable noexcept -> return_type { function_body } |
Capture(捕获子句)
此部分用于指定哪些外部局部变量可被 Lambda 表达式访问,并且以什么方式访问。
[]
:不捕获任何外部变量。[=]
:以值方式捕获所有外部变量。[&]
:以引用方式捕获所有外部变量。[x, &y]
:以值方式捕获x
,以引用方式捕获y
。
Parameter List(参数列表)
就像常规函数一样,你可以传递参数给 Lambda 函数。
()
:不接受任何参数。(int x, int y)
:接受两个整数参数。
Mutable 修饰符
如果你需要修改以值捕获的外部变量,需要用到 mutable
。
Noexcept 修饰符
指示该 Lambda 表达式是否保证不抛出异常。
Return Type(返回类型)
你可以明确指定返回类型,就像常规函数一样。
-> int
:返回int
类型。
Function Body(函数体)
实际执行的代码块。
示例:
一般写法
|
递归写法
function<void(int, int)> dfs = [&](int now, int fa) |
//有循环报错了 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 善良的xwysyy!