map自定义排序
- map自带的排序时根据键值key自小而大进行,而有些时候需要根据键值自定义,比如由大到小等;
- 注意: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;
}
网友评论