- map容器默认排序规则为 按照key值进行 从小到大排序
- 利用仿函数,可以改变排序规则
- map容器的排序是按key键值来排的,主要取决于键值的类型是内置的还是自定义的
#include<iostream>
#include<string>
#include<map>
using namespace std;
class Person
{
public:
Person(string name,int age)
{
this->m_name = name;
this->m_age = age;
}
string m_name;
int m_age;
};
class myCompare
{
public:
bool operator()(int v1, int v2)
{
return v1 > v2;
}
};
void test01()
{
map<int, Person, myCompare> m;
Person p1("张三", 18);
Person p2("李四", 20);
Person p3("王五", 19);
m.insert(make_pair(2, p1));
m.insert(make_pair(3, p2));
m.insert(make_pair(1, p3));
for (map<int, Person, myCompare>::iterator it = m.begin();it != m.end();it++)
{
cout << it->first << " " << it->second.m_name << " " << it->second.m_age << endl;
}
}
class compare
{
public:
bool operator()(Person p1,Person p2)
{
return p1.m_age > p2.m_age;
}
};
void test02()
{
map<Person, int, compare> m;
Person p1("张三", 18);
Person p2("李四", 20);
Person p3("王五", 19);
m.insert(make_pair(p1, 10));
m.insert(make_pair(p3, 1));
m.insert(make_pair(p2, 100));
for (map<Person, int, compare>::iterator it = m.begin();it != m.end();it++)
{
cout << it->first.m_name << " " << it->first.m_age << " " << it->second << endl;
}
}
int main()
{
test02();
return 0;
}