をセットに追加しようとしてpair<int,int>
います。ペアがセット内の別のペアと同じ 2 つの値を共有している場合は、挿入しないでください。
これが私の非動作コードです:
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));
}
現時点では、(1,4) ペアが既に存在するにもかかわらず、(4,1) ペアが追加されます。セットの最終的な内容は次のとおりです。
(1 3)
(1 4)
(4 1)
そしてそうであってほしい
(1 3)
(1 4)
オーバーロードされたメソッドにブレークポイントを設定しようとしましたが、到達することはありません。私は何を間違えましたか?