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和方括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript中使用大括号和方括号的常量声明[重复]

正则表达式提取方括号之间的文本[重复]

带方括号的链表

语法 - 变量声明周围的方括号是啥意思[重复]

如何指定方括号中的文本[重复]

带方括号的 PyCharm 安装包 [重复]