мне нужен словарь для хранения информации о расстоянии между двумя вершинами графа (вершины заданы их номерами, расстояние - положительное целое)
хотел написать что-то вроде std::map< std::pair<int, int>, int>, для чего первым делом унаследовался от std::pair и перегрузил оператор ==, чтобы не хранить в словаре избыточную информацию (из 1 к 20 вершине это то же самое, что из 20 к 1)
но тут возникла проблема:
std::map< myPair<int, int>, int> map;
myPair<int, int> p1;
p1.first = 10;
p1.second = 20;
myPair<int, int> p2;
p2.first = 20;
p2.second = 10;
// p1 == p2 возвращает true
map[p1] = 100;
// map[p2] == 0
[/cpp]
почему?