C++ Primer(第5版) 练习 14.40
练习 14.40 重新编写10.3.2节(第349页)的biggies函数,使用函数对象类替换其中的lambda表达式。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
class CompareTwo{
public:
bool operator()(const string &a, const string &b){
return a.size() < b.size();
}
};
class CompareOne{
public:
CompareOne(vector<string>::size_type s): sz(s){}
bool operator()(const string &a){
return a.size() >= sz;
}
private:
vector<string>::size_type sz;
};
class Output{
public:
bool operator()(const string &s){
cout<<s<<" ";
}
};
void biggies(vector<string> &words, vector<string>::size_type sz){
elimDups(words);
stable_sort(words.begin(), words.end(), CompareTwo());
auto wc = find_if(words.begin(), words.end(), CompareOne(sz));
auto count = words.end() - wc;
cout<<count<<" "<<make_plural(count, "word", "s")<<" of length "<<sz<<" or longer"<<endl;
for_each(wc, words.end(), Output());
cout<<endl;
}