lambda表达式:[capture] (params) {body}
lambda表达式是一种cpp的匿名闭包函数。为了使body中的逻辑与外界数据进行交互。我们需要用[capture]
来捕获外界数据。如使用[a,b]
来捕获外界的变量a,b。
默认的捕获当lambda表达式建立时变量a,b的副本。也就是所谓的以值的方式被捕获。在body中修改a,b不会影响到外界的数据(参考函数与调用函数的关系)。但是为了实现某些目的:比如计数。我们需要在body中修改外部的变量。那么我们就需要以引用的方式捕获外部变量。有两种写法:
1.以引用的方式捕获所有的外部自动变量。
适用范围:对整个类进行操作。
1 | [&](){ |
2.以引用的方式捕获某个值
适用范围:进行小范围的计数等不需要被其他方法引用的变量。
1 | int* a;//必须是指针才能被正常的引用 |