C ++ 11 lambdas和方括号[重复]
Posted
技术标签:
【中文标题】C ++ 11 lambdas和方括号[重复]【英文标题】:C++11 lambdas and the square brackets [duplicate] 【发布时间】:2013-03-11 16:17:44 【问题描述】:查看这个示例 lambda:
[](int factor)->intreturn factor*factor;
谁能向我解释一下 C++11 lambda 表达式前面的 方括号 有什么用处?
【问题讨论】:
顺便说一句,在其他答案中没有提到,[]
也使得解析这里有一个 lambda 表达式非常容易:想象一下你可以有一个 lambda 表达式的上下文。你能想象这样一种情况,在同一点对[
进行不同的使用是有效的吗?
【参考方案1】:
方括号指定了 lambda “捕获”了哪些变量,以及如何(通过值或引用)。
捕获意味着您可以从 lambda 内部引用 lambda 外部的变量。如果按值捕获,您将在创建 lambda 时获取变量的值——类似于按值将参数传递给函数。如果通过引用捕获,您将拥有对 lambda 之外的实际变量的引用(并且您需要确保它保持在范围内)。
请注意,您可以在类中捕获“this”,然后像在类方法中一样调用类方法。
【讨论】:
以上是关于C ++ 11 lambdas和方括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章