C++中lambda 表达式、unique()、stable_sort()、find_if()、find_each()的综合使用

 问题:在vector找出所有长度大于等于4的元素。

 方法如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

//删除重复的元素                                                                
void delDups(vector &svec){
	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 &words,
	vector::size_type sz)
{
	delDups(words);

	//用lambda作为第三个参数   
	stable_sort(
		words.begin(), 
	    words.end(),
	    [](const string &s1, const string &s2)
	{return s1.size() < s2.size();
	});
    //stable_sort(words.begin(), words.end(), shorter);

	//把长度参数sz作为捕获列表,传递给lambda表达式
	auto idx = find_if(
		words.begin(),
		words.end(),
		[sz](const string &s)
	{
		return s.size() >= sz;
	});//函数返回字符串的长度大于等于4的地址

	auto cnt = words.end() - idx;//长度大于等于4的字符串个数
	cout << cnt << " word's length >= " << sz << endl;
	for_each(
		idx, 
		words.end(), 
		[](const string &s)
	{
		cout << s << " ";
	});//逐一输出字符串长度大于等于4之后的字符串
	cout << endl;
}
int main(){
	//test1 自定义排序算法                                                        
	/*
	vector svec{"the","quick","red","fox","jumps",
	"over", "the","slow","red","turtle"};
	delDups(svec);
	//先按长度排序,长度相同的,再用字典顺序排序
	stable_sort(svec.begin(),svec.end(),shorter);
	for(const auto &s : svec){
	cout << s << " ";
	}
	cout << endl;
	for (int i = 0; i < svec.size(); i++){
		if (svec[i].size() >= 4){
			cout << svec[i]<<' ';
		}
	}
	*/
	//test2 用lambda作为参数                                                      
	vector svec{ "the", "quick", "red", "fox", "jumps",
		"over", "the", "slow", "red", "turtle" };
	bigger(svec, 4);

}

 本文链接:https://www.cnblogs.com/xiaoshiwang/p/9666962.html

 更多关于lambda 表达式的使用可以参考:https://blog.csdn.net/u010984552/article/details/53634513

你可能感兴趣的:(数据结构和算法,C++学习)