C++11之前,不能在一个函数里面再定义一个函数,C++11引入了lambda函数的概念,可以在一个函数内部定义局部函数:
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> a = {1, 2, 3, 4};
vector<int> b = {5, 6, 7, 8};
auto p=[](vector<int>& d){ //定义一个lambda函数
for(auto i : d)
{
cout<<i<<" ";
}
cout<<endl;
};
p(a);
p(b);
return 0;
}
如果不使用lambda函数,需要在函数main外面定义一个函数
对于这样一个简单的应用,单独应以一个函数视乎小题大做
lambda函数可以更为方便的解决这个问题
运行程序输出:
1 2 3 4
5 6 7 8
lambda函数的声明:
[capture](parameters)mutable->return-type{statement}
- [capture]:捕获列表,用于描述lambda函数可以使用父作用域(包含lambda函数的块作用域)的自由变量(必须是自由变量)的范围和方式:
[var] |