lambda 表达式 介绍
问题:假设有个需求是,在vector
肿么办???
解决办法:使用lambda。
lambda简单介绍:多了一个捕获列表的无名内联函数。
[capture List] (parameter List) -> return type { function body }
捕获列表,参数列表(可省略),返回值类型(可省略),函数体。
具体做法:把问题中的长度4作为捕获列表,把vector
完美!!!
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
//删除重复的元素
voID delDups(vector
sort(svec.begin(),svec.end());
auto end_u = unique(svec.begin(),svec.end());
svec.erase(end_u,svec.end());
}
//自定义的排序规则
bool shorter(const string s1,const string s2){
return s1.size() < s2.size();
}
//用lambda作为参数
voID bigger(vector
vector
delDups(words);
//用lambda作为第三个参数
stable_sort(words.begin(),words.end(),
[](const string &s1,const string &s2){
return s1.size() < s2.size();
});
//把长度参数sz作为捕获列表,传递给lambda表达式
auto IDx = find_if(words.begin(),
[sz](const string &s){
return s.size() >= sz;
});
auto cnt = words.end() - IDx;
cout << cnt << " word's length >= " << sz << endl;
for_each(IDx,[](const string &s){
cout << s << " ";
});
cout << endl;
}
int main(){
//test1 自定义排序算法
/*
vector
"over","the","slow","turtle"};
delDups(svec);
//先按长度排序,长度相同的,再用字典顺序排序
stable_sort(svec.begin(),svec.end(),shorter);
for(const auto &s : svec){
cout << s << " ";
}
cout << endl;
*/
//test2 用lambda作为参数
vector
bigger(svec,4);
}
总结以上是内存溢出为你收集整理的c/c++ lambda 表达式使用实例分析全部内容,希望文章能够帮你解决c/c++ lambda 表达式使用实例分析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)