MAP

作者: shasha075 | 来源:发表于2019-12-11 23:41 被阅读0次

map自定义排序

  1. map自带的排序时根据键值key自小而大进行,而有些时候需要根据键值自定义,比如由大到小等;
  2. 注意:map的自定义和sort函数不同,sort函数只需要简单写个比较函数就可以;而map需要在外围写个结构体,然后重载‘()’,其次参数时const类型,同时该函数时常成员函数,即该函数不能修改属于该对象的任何成员变量。
#include <iostream>
#include <map>
using namespace std;

struct Bigger {
    bool operator () (const int &a, const int &b) const
    {
        return a > b;
    }
};

class Solution {
public:
    void OutputMap(map<int, int> &mapPara)
    {
        map<int, int>::iterator iterMap = mapPara.begin();
        for (; iterMap != mapPara.end(); iterMap++) {
            cout<<iterMap->first<<" ";
        }
        cout<<endl;
    }
    void OutputMap(map<int, int, Bigger > &mapPara)
    {
        map<int, int>::iterator iterMap = mapPara.begin();
        for (; iterMap != mapPara.end(); iterMap++) {
            cout<<iterMap->first<<" ";
        }
        cout<<endl;
    }
    void OutputMap(map<int, int, greater<int> > &mapPara)
    {
        map<int, int>::iterator iterMap = mapPara.begin();
        for (; iterMap != mapPara.end(); iterMap++) {
            cout<<iterMap->first<<" ";
        }
        cout<<endl;
    }
    void TestMap()
    {
        map<int, int> defaultMap;
        defaultMap.insert(pair<int, int>(3, 2));
        defaultMap.insert(pair<int, int>(5, 2));
        OutputMap(defaultMap);
        
        map<int, int, Bigger> sortMap; // 自定义从大到小排列
        sortMap.insert(pair<int, int>(3, 2));
        sortMap.insert(pair<int, int>(5, 2));
        OutputMap(sortMap);
        
        map<int, int, greater<int> > greaterMap; // 系统自带从大到小排列
        greaterMap.insert(pair<int, int>(3, 2));
        greaterMap.insert(pair<int, int>(5, 2));
        OutputMap(greaterMap);
    }
};
int main()
{
    Solution sol;
    sol.TestMap();
    return 0;
}

相关文章

网友评论

      本文标题:MAP

      本文链接:https://www.haomeiwen.com/subject/xbfzgctx.html