# 泛型算法例子

#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);
}

• 本文已收录于以下专栏：

举报原因： 您举报文章：泛型算法例子 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)