只要我们有一个函数指针,我们就可以在C++中使用lambda。
lambda是我们不需要函数定义就可以定义一个函数的方法。
lambda的用法是:在我们会设置函数指针指向函数的任何地方,我们都可以将它设置为lambda
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
void ForEach(const std::vector<int>& values,const std::function<void(int)>& func)
{
for(int value:values)
func(value); //实际上调用了main函数里面定义的lambda表达式
}
int main()
{
std::vector<int> values = {1,2,3,4,5};
//find_if找到values中第一个>3的数
auto it = std::find_if(values.begin(),values.end(),[](int value){return value > 3;});
std::cout<< *it <<std::endl;
int a = 5;
//我们可以定义一个auto变量
auto lambda = [=](int value){std::cout<<"Value:"<<a<<std::endl;};
//[]表示的是捕获
ForEach(values,lambda);
return 0;
}