关于C++使用STLset自定义数据类型的排序时产生的编译错误,应该如何解决。
#include<iostream>
#include<map>
#include<string>
using namespace std;
class Person
{
public:
Person(string name, int age) :m_Name(name), m_Age(age) {}//传入参数列表的构造函数
string m_Name;
int m_Age;
};
class MyCompare
{
public:
bool operator()(Person& p1, Person& p2)const
{
return p1.m_Age > p2.m_Age;//逆序排序
}
};
int main()
{
map <Person, int, MyCompare>m;
Person p1("aaa", 40);
Person p2("bbb", 30);
Person p3("ccc", 20);
Person p4("ddd", 15);
m[p1] = 0;
m.insert(pair<Person, int>(p2, 0));
m.insert(map<Person, int>::value_type(p3, 0));
m.insert(make_pair(p4, 0));
system("pause");
return 0;
}