мой код выглядит так:
struct Info
{
string name;
int score;
bool operator< (const Info &x) const
{
return score < x.score;
}
};
int main(int argc, char *argv[])
{
Info a, b;
a.name = "eric";
a.score = 90;
b.name = "cat";
b.score = 85;
map<Info, int> m;
m[a] = 1;
m[b] = 2;
map<Info, int>::iterator it;
for(it = m.begin(); it != m.end(); it++)
{
cout << it->first.name << endl;
}
return 0;
}
он выводит "cat" и "eri c", как и ожидалось. но как бы то ни было, когда я изменяю его на «сделать a.score и b.score одинаковыми» *
Info a, b;
a.name = "eric";
a.score = 90;
b.name = "cat";
b.score = 90;
Он выводит только "eri c", на всей карте есть только один элемент.
вопрос: считает ли std :: map один и тот же ключ? как заставить std :: map думать, что они не совпадают? Я пытался оператор ==, но не работает.