#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;
void output(string s)
{
cout << s << " ";
}
void elimDups(vector<string> &words)//删除相同单词,并进行排序
{
sort(words.begin(), words.end());//排序
vector<string> end_unique_words = unique(words.begin(), words.end()); //把重复元素移到后面,并且返回去重后最后一个元素的地址
words.erase(end_unique_words, words.end());//删除重复
}
void biggest(vector<string> &words, string::size_type sz)
{
elimDups(words);
stable_sort(words.begin(), words.end(),
[](const string &a, const string &b)
{return a.size() < b.size(); });//按长度排列
auto wc = find_if(words.begin(), words.end(), [sz](const string &a){return a.size() >= sz; });//获取比指定长度长的单词
auto count = words.end() - wc;
cout << count << endl;
/*for_each(wc, words.end(),
[](const string &s){cout << s << " "; });*/
for_each(wc, words.end(),output);
cout << endl;
}
void main()
{
vector<string> vec;
cout << "请输入一行英文(输入Ctrl+z结束):" << endl;
string str;
while (cin>>str && (str!="EOF"))
{
vec.push_back(str);
}
/*vec.push_back("sdf");
vec.push_back("dsfd");
vec.push_back("fgf");
vec.push_back("gfgf");
vec.push_back("sdf");
vec.push_back("asd");*/
biggest(vec, 4);
//for_each(vec.begin(), vec.end(), output);
}
泛型算法例子
最新推荐文章于 2023-03-26 19:39:12 发布