C++ Lambda表达式与程序文件管理全解析
1. Lambda表达式捕获子句
Lambda表达式是C++中强大的工具,其捕获子句决定了如何访问外部作用域的变量。
- 按值捕获( = ) :使用 = 捕获子句,可从lambda表达式内部按值访问所有在其定义处作用域内的变量。但默认情况下,这些变量的副本是不可修改的。例如:
change(data, [=](double x){ factor += 2.0;
return factor*x; });
上述代码无法编译,因为按值捕获的变量副本默认是 const 的。若要修改副本,需添加 mutable 关键字:
change(data, [=](double x) mutable { factor += 2.0;
return factor*x; });
添加 mutable 后,可修改副本,但不会改变原始变量的值。而且,每次调用lambda时,副本的值会保留,类似静态变量。
- 按引用捕获( & ) :使用 &
超级会员免费看
订阅专栏 解锁全文
1030

被折叠的 条评论
为什么被折叠?



