// 自定义排序
#include <iostream>
#include <set>

using namespace std;

// 自定义规则
template <typename T>
class MySort
{
public:
    bool operator()(const T &a, const T &b)
    {
        return a > b; // 从小到大排序
    }
};

int main()
{
    // 使用 set 时，添加自定义排序规则
    set<int, MySort<int> > s1;
    s1.insert(20);
    s1.insert(30);
    s1.insert(1);
    s1.insert(8);

    set<int, MySort<int> >::iterator it = s1.begin(); // <int, MySort<int>> 可以省略
    while (it != s1.end())
    {
        cout << *it << ' ';
        ++it;
    }
    cout << endl;

    return 0;
}
