C++ 中的Lambda 表达式


C++ STL 包含诸如 std::for_each 等有用的通用函数。不幸的是,它们也可能很繁琐,特别是在你想应用的函数符对特定函数来说是唯一的。因此,你将创建的这个函数将位于该命名空间中,仅用于在一个地方。 解决方法是使用匿名函数。

C++ 在 C++11 中引入了 lambda 表达式,允许创建匿名函数。例如,

示例

 运行演示

#include<iostream>
#include<vector>
#include <algorithm> // for_each
using namespace std;
int main() {
   vector<int> myvector;
   myvector.push_back(1);
   myvector.push_back(2);
   myvector.push_back(3);
   for_each(myvector.begin(), myvector.end(), [](int x) {
      cout << x*x << endl;
   });
}

输出

1
4
9

(int x)用于定义 lambda 表达式将被调用的参数。 [] 用于将变量从局部作用域传递到 lambda 的内部作用域,这称为捕获变量。如果这些表达式很简单,可以自动推断它们的类型。你还可以使用以下语法显式提供类型信息

[](int x) -> double {
   return x/2.0;
}

更新于: 30-Jul-2019

452 次浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告