Я пытаюсь добавить pair<int,int>
к набору.Если пара имеет те же два значения, что и другое в наборе, она не должна быть вставлена.
Вот мой нерабочий код:
typedef std::pair<int, int> PairInt;
template<>
bool std::operator==(const PairInt& l, const PairInt& r)
{
return (l.first == r.first && l.second == r.second) ||
(l.first == r.second && l.second == r.first);
}
int main()
{
std::set<PairInt> intSet;
intSet.insert(PairInt(1,3));
intSet.insert(PairInt(1,4));
intSet.insert(PairInt(1,4));
intSet.insert(PairInt(4,1));
}
На данный момент (4,1) пара добавляется, хотя пара уже существует (1,4).Окончательное содержимое набора:
(1 3)
(1 4)
(4 1)
, и я хочу, чтобы оно было
(1 3)
(1 4)
Я пытался установить точки останова в перегруженном методе, но они никогда не достигаются.Что я сделал не так?