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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP