Lambda 捕获列表提供了灵活的方式来指定 Lambda 函数体内可以访问的外部变量。以下是一些常见的 Lambda 捕获列表使用技巧:
-
值捕获:
[x, y]
:通过值捕获指定的外部变量x
和y
。
-
引用捕获:
[&x, &y]
:通过引用捕获指定的外部变量x
和y
。
-
混合捕获:
[x, &y]
:通过值捕获x
,通过引用捕获y
。
-
捕获所有变量(值捕获):
[=]
:通过值捕获所有外部变量。
-
捕获所有变量(引用捕获):
[&]
:通过引用捕获所有外部变量。
-
捕获所有变量(忽略某些变量):
[=, &x]
:通过值捕获所有外部变量,但通过引用捕获变量x
。
-
捕获外部变量后添加修改权限:
[x = 10, y]
:通过值捕获x
,但允许修改x
的副本。
-
捕获列表的类型推导:
[&a = x, b = y]
:使用捕获列表中的初始化表达式进行类型推导。
-
省略捕获列表:
[]
:不捕获任何外部变量。在 Lambda 函数体内只能使用局部变量或全局变量。
-
Lambda 函数体无参数:
[=]() { /* Lambda 函数体 */ }
:在捕获列表中写=
,然后在括号中写参数列表为空。