如何使用C++的泛型算法

来源:互联网 发布:汉服复原小组淘宝 编辑:程序博客网 时间:2024/05/18 19:18

从键盘上输入一句话或者一段话和一个英文字的长度阀值,输出这段话中有几个字超过这个阀值长度并按长度从小到大输出(当长度相等时按字母序排列)。


#include<iostream>#include<vector>#include<algorithm>using namespace std;//删除重复的单词 vector<string> words;void elimDups(vector<string> &words){sort(words.begin(),words.end());//vector<string>::iterator auto end_unique=unique(words.begin(),words.end());words.erase(end_unique,words.end());}int main(){   int sz;   cin>>sz;//输入阀值    string str;   while(cin>>str){    //将输入的一段话保存在一个容器中    words.push_back(str);   }    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<<" "<<"word(s) of length"<<sz<<" or longer"<<endl;     for_each(wc,words.end(),[](const string &s){cout<<s<<" ";});//一次输出英文单词 }

本题代码参考C++ plus第五版11章泛型算法,编译器使用的是gun C++11
0 0
原创粉丝点击