zoukankan      html  css  js  c++  java
  • 删除容器中重复字符串并按长度排序…

    #include < iostream> >
    #include < algorithm> >
    #include < string> >
    #include < vector> >

    using namespace std;

    string make_plural(size_t ctr, const string &word,
        const string &ending)
    {
        return (ctr > 1) ? word + ending : word;
    }

    bool IsShorter(const string &str1, const string &str2)
    {
        return str1.size() < str2.size();
    }

    void ElimDups(vector &words)
    {
        sort(words.begin(), words.end());

        auto end_unique = unique(words.begin(), words.end());
        words.erase(end_unique, words.end());
    }

    void BiggiesWithFind_if(vector &words,
        vector::size_type sz)
    {
        //按字典排序, 删除重复单词
        ElimDups(words);

        //按长度排序, 长度相同的维持字典序
        stable_sort(words.begin(), words.end(),
            [](const string &str1, const string &str2)
        {return str1.size() < str2.size(); });

        //获取一个迭代器, 指向第一个满足size() > sz的元素
        auto wc = find_if(words.begin(), words.end(),
            [=](const string &s)//可以使用隐式捕获, 编译器会自己推断捕获内容
                                //捕获引用使用'&' , 捕获值使用'='
        {return s.size() >= sz;    });

        //计算满足条件元素的数目
        auto count = words.end() - wc;
        cout << count << " " << make_plural(count, "word", "s")
            << "  of length  " << sz << "  or longer" << endl;

        //打印每个长度大于等于要求的值的单词, 每个单词后面接一个空格
        for_each(wc, words.end(),
            [](const string &s) {cout << s << " "; });
        cout << endl;
    }

    void BiggiesWithPartition(vector &words,
        vector::size_type sz)
    {
        ElimDups(words);
        auto wc = partition(words.begin(), words.end(),
            [sz](const string &str) {return str.size() < sz; });
        //计算满足条件元素的数目
        auto count = words.end() - wc;
        cout << count << " " << make_plural(count, "word", "s")
            << "  of length  " << sz << "  or longer" << endl;

        //打印每个长度大于等于要求的值的单词, 每个单词后面接一个空格
        for_each(wc, words.end(),
            [](const string &s) {cout << s << " "; });
        cout << endl;
    }

    int main(int argc, char **argv)
    {
        vectorstr_vec{ "the", "red", "fox", "jump", "over", "the", "slow", "red", "turtle" };
        BiggiesWithFind_if(str_vec, 4);
        cout << "-------------------" << endl;
        BiggiesWithPartition(str_vec, 4);
        return 0;
    }

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/wuOverflow/p/4098745.html
Copyright © 2011-2022 走看看