一句话总结:map的底层实现基于红黑树,是排好序的,key应该能够做比较才行。
如果是结构体怎么办,为了能够比较,那就只能以一个变量作为比较元素,需重载<比较操作符,>操作符重载可选,但只重载>操作符不行。
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct StudentGrade
{
string name;
int score;
bool operator< (const StudentGrade &sg) const
{
return score < sg.score;
}
};
int main()
{
StudentGrade a, b;
a.name = "jack";
a.score = 90;
b.name = "john";
b.score = 80;
map<StudentGrade, int> m;
m[a] = 1;
m[b] = 2;
return 0;
}