lambda轮子p349

#include <iostream>
#include <vector>
#include <string>
#include <algorithm> 
using namespace std;
void elimDups(vector<string> &words);
bool isShorter(const string &s1,const string &s2);
void biggies(vector<string> &words,vector<string>::size_type sz);
int main()
{
    system("color f5");
    vector<string> words = {"the","quick","red","fox","jumps","over","the","slow","red","turtle"};
    biggies(words,6);
    //elimDups(words);
    //sort(words.begin(),words.end(),isShorter);
    //stable_sort(words.begin(),words.end(),isShorter);
//    for(vector<string>::iterator it = words.begin(); it != words.end(); it++) {
//        cout << *it << " ";
//    }
//    for (const auto &s : words)
//        cout << s << " ";
//    cout << endl;
    system("pause");
    return 0;
}
//消除重复单词  
void elimDups(vector<string> &words)
{
    sort(words.begin(),words.end());
    auto end_unique = unique(words.begin(),words.end());
    words.erase(end_unique,words.end());
}
//比较函数,用来按长度排序单词 
bool isShorter(const string &s1,const string &s2)
{
    return s1.size() < s2.size();

//神奇的函数  
void biggies(vector<string> &words,vector<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 << " " /*<< make_plural(count,"words","s")*/
         << " of length " << sz << " or longer" << endl;
    for_each(wc,words.end(),
             [](const string &s) {cout << s << " ";});
    cout << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值