C++11 中的 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;
}

若要详细了解 C++ lambda,请访问 StackOverflow 主题 − https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11



更新日期: 2020 年 6 月 24 日

328 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告