Ich versuche, eine pair<int,int>
zu einem Satz hinzuzufügen. Wenn ein Paar die gleichen zwei Werte wie ein anderes in der Menge teilt, sollte es nicht eingefügt werden.Paar gleich Operatorüberlastung für das Einfügen in Satz
Hier ist mein nicht-funktionierenden Code:
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));
}
Im Moment das (4,1) Paar wird hinzugefügt, obwohl es bereits ein (1,4) Paar. Der endgültige Inhalt des Satzes ist:
(1 3)
(1 4)
(4 1)
und ich mag es
(1 3)
(1 4)
Ich habe versucht, sein habe Haltepunkte in der überladenen Methode setzen, aber sie nie erreicht bekommen. Was habe ich falsch gemacht?
Funktioniert perfekt, danke – Petwoip
@Nawaz können Sie einen ähnlichen Ansatz für die Überladung
akashchandrakar
@aksam bieten: Versuchen Sie sich zuerst. Dann lassen Sie mich wissen, was Sie bereits versucht haben. Vielleicht, dann würde ich helfen. – Nawaz