\[&\] 在函数之前是什么意思?

新手上路,请多包涵

下面的代码是什么意思?

 auto allowed = [&](int x, const std::vector<int>&vect){

....

}

我的意思是, [&] 是做什么的?它是与变量同名的函数吗?

因为是这样使用的: unsigned short ok = get_allowed(0, vect);

原文由 Droide 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
2 个回答

这意味着 lambda 函数将通过 引用 捕获范围内的所有变量。

要在其中使用传递给 lambda 的变量以外的其他变量,我们可以使用 capture-clause [] 。您可以通过引用和值来捕获,您可以分别使用 & 和 = 指定:

  • [=] 按值捕获范围内的所有变量
  • [&] 通过引用捕获范围内的所有变量
  • [&var] 捕获 var 通过引用
  • [&, var] 指定默认的捕获方式是引用我们要捕获 var
  • [=, &var] 默认按值捕获范围内的变量,但捕获 var 使用引用代替

原文由 nishantsingh 发布,翻译遵循 CC BY-SA 3.0 许可协议

它是一个 _lambda 捕获列表_,已在 C++ 11 标准的 C++ 中定义。

[&] 这意味着您希望 通过引用 访问当前在 lambda 函数范围内的每个变量。

您的工作是确保在调用 闭包 时引用的对象仍在范围内,否则程序行为是 undefined

原文由 Bathsheba 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题