Lambda表达式是一种与匿名函数密切相关的编程技术,实际上一个Lambda表达式隐式定义了一个函数类并构造了一个该函数类的函数对象。可以将Lambda表达式看做一个可以维持状态并且可以访问所在封闭作用域的变量的匿名函数。在作用上,Lambda表达式类似于函数指针和函数对象,Lambda表达式很好的兼顾了函数指针和函数对象的优点。
下面是一个使用Lambda表达式的例子:
#include <algorithm> #include <iostream> #include <ostream> #include <vector> using namespace std; int main() { vector<int> v; for(int i=0; i<10; i++) { v.push_back(i); } for_each(v.begin(), v.end(), [](int n){cout << n << "";}); cout << endl; }
这个程序的输出是:
0 1 2 3 4 5 6 7 8 9
在语句
for_each(v.begin(), v.end(), [](int n){cout << n << "";});
的后半段包含Lambda表达式,其中[]代表Lambda表达式引入符,这个符号告诉编译器一个Lambda表达式开始。后面的(int n)为Lambda参数声明,告诉编译器这个匿名函数调用所使用的参数,后面{}所包含的语句代表这个匿名函数的函数体。