泛型算法例子

来源:互联网 发布:软件测试 视频教程 编辑:程序博客网 时间:2024/06/06 16:34
#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);}

0 0
原创粉丝点击