什么是网站关键词,网站建设哪家公司好招聘,湛江网站设计,临沂做网站推广的公司在 C11 中#xff0c;lambda 表达式可以通过捕获列表来捕获指定的变量。捕获列表是放在 lambda 表达式参数列表之前的一对方括号 [] 中#xff0c;用来指定 lambda 表达式捕获哪些变量。
捕获列表有以下几种形式#xff1a;
[]#xff1a;不捕获任何变量。[]#x…在 C11 中lambda 表达式可以通过捕获列表来捕获指定的变量。捕获列表是放在 lambda 表达式参数列表之前的一对方括号 [] 中用来指定 lambda 表达式捕获哪些变量。
捕获列表有以下几种形式
[]不捕获任何变量。[]以引用的方式捕获所有变量。[]以值的方式捕获所有变量。[x, y]以值的方式捕获变量 x以引用的方式捕获变量 y。[x, y]以引用的方式捕获变量 x以值的方式捕获变量 y。
其中 表示以引用的方式捕获变量 表示以值的方式捕获变量。方括号中的变量名表示要捕获的变量多个变量之间用逗号分隔。
例如以下代码演示了如何在 lambda 表达式中捕获指定变量
#include iostreamint main() {int x 1;int y 2;auto f [x, y]() {std::cout x x , y y std::endl;x;y;};f(); // 输出 x 1, y 2std::cout x x , y y std::endl; // 输出 x 1, y 3return 0;
}在这个例子中我们定义了一个 lambda 表达式 f通过捕获列表 [x, y] 捕获了变量 x 和 y。在 lambda 表达式中我们输出了变量 x 和 y 的值并对它们进行了修改。在 lambda 表达式执行完毕后我们再次输出变量 x 和 y 的值可以看到变量 x 的值没有改变而变量 y 的值已经被修改了。
总结 Lambda 表达式捕获变量值方式与引用方式的不同 1.值方式捕获变量该变量可读可写 2.引用方式捕获变量该变量仅可读