【问题标题】:C++11 lambdas and the square brackets [duplicate]C ++ 11 lambdas和方括号[重复]
【发布时间】:2013-03-11 16:17:44
【问题描述】:

查看这个示例 lambda:

[](int factor)->int{return factor*factor;}

谁能向我解释一下 C++11 lambda 表达式前面的 方括号 有什么用处?

【问题讨论】:

  • 顺便说一句,在其他答案中没有提到,[] 也使得解析这里有一个 lambda 表达式非常容易:想象一下你可以有一个 lambda 表达式的上下文。你能想象这样一种情况,在同一点对[ 进行不同的使用是有效的吗?

标签: c++ syntax c++11 lambda


【解决方案1】:

方括号指定了 lambda “捕获”了哪些变量,以及如何(通过值或引用)。

捕获意味着您可以从 lambda 内部引用 lambda 外部的变量。如果按值捕获,您将在创建 lambda 时获取变量的值——类似于按值将参数传递给函数。如果通过引用捕获,您将拥有对 lambda 之外的实际变量的引用(并且您需要确保它保持在范围内)。

请注意,您可以在类中捕获“this”,然后像在类方法中一样调用类方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-16
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多