- 序言:今天刷算法题时看到人家的解题方法运用了lambda表达式的功能,瞬间感觉整段程序简而易懂。因此发篇文章温故而知新先。
一、lambda的使用详细说明
![在这里插入图片描述](https://img-blog.csdnimg.cn/21436e326b93446bb7e76777e9196973.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aWl54m55pu85LiN5ZCD6L6j5p2h,size_20,color_FFFFFF,t_70,g_se,x_16)
二、lambda的运用
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int>temp{};
temp.resize(10);
int i=10;
int num=0;
generate(temp.begin(),temp.end(),[i,&num]{
num=i*i+num;
return num;
});
cout<<"i: "<<i<<"、num: "<<num<<endl;
for_each(temp.begin(),temp.end(),[&](int a){
cout<<a<<"、";
});
cout<<endl<<"---------------------------------"<<endl;
int a =100;
auto fun=[a]()->int {return a/10;};
int c=fun();
cout<<c<<endl;
cout<<"---------------------------------"<<endl;
int countIndex = count_if(temp.begin(), temp.end(), [](int x) {
return x / 1000 == 0;
});
cout << "除以1000等于零在vector中的索引为:countIndex=" << countIndex << endl;
cout<<"---------------------------------"<<endl;
int num1 = 10,num2 = 5;
for_each(temp.begin(),temp.end(),[=](int x){
x=x*num1+num2;
cout<<"x= "<<x<<endl;
});
for_each(temp.begin(),temp.end(),[&](int a){
cout<<a<<"、";
});
cout<<endl<<"---------------------------------"<<endl;
for_each(temp.begin(), temp.end(), [=](int &x) {
x = x * num1 + num2;
cout << "x=" << x << endl;
});
for_each(temp.begin(),temp.end(),[&](int a){
cout<<a<<"、";
});
cout<<endl<<"---------------------------------"<<endl;
return 0;
}