您的位置:首页 > 其它

泛型算法例子

2015-07-08 09:37 281 查看
#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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型算法