zoukankan      html  css  js  c++  java
  • (C++)Set集合,比较函数

    Set的默认将里面的元素从小到大排序。

    如果想从大到小,需要用到greater<typename>

    如果Set里的元素是string类型的,则是按字典序排序的。

    比如:下面这段代码是按字典序从大到小排列的。

    #include<stdio.h>
    #include<stdlib.h>
    #include<unordered_map>
    #include<iostream>
    #include<string>
    #include<assert.h>
    #include<set>
    int main() {
        string MainWord = "abppplee";
        set<string, greater<string>> WordPool;
        WordPool.insert("able");
        WordPool.insert("ale");
        WordPool.insert("apple");
        WordPool.insert("bale");
        WordPool.insert("kangaroo");
        //cout << find(MainWord, WordPool) << endl;
        set<string, greater<int>>::iterator it;
        for (it = WordPool.begin(); it != WordPool.end(); it++)
            cout << (*it) << endl;
        return 0;
    }

    也可以自己写个结构体来重载比较函数:

    #include<stdlib.h>
    #include<unordered_map>
    #include<iostream>
    #include<string>
    #include<assert.h>
    #include<set>
    struct length_more {
        bool operator()(const string& s1, const string& s2) {
            return s1.size() > s2.size();
        }
    };
    int main() {
        string MainWord = "abppplee";
        set<string, length_more> WordPool;
        WordPool.insert("able");
        WordPool.insert("ale");
        WordPool.insert("apple");
        WordPool.insert("bale");
        WordPool.insert("kangaroo");
        //cout << find(MainWord, WordPool) << endl;
        set<string>::iterator it;
        for (it = WordPool.begin(); it != WordPool.end(); it++)
            cout << (*it) << endl;
        return 0;
    }
  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/Bella2017/p/11153415.html
Copyright © 2011-2022 走看看