집합에 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)
되고 싶어하지만, 그들은 결코 도달하지 얻을. 나는 무엇을 잘못 했는가?
완벽하게 작동합니다. 감사합니다. – Petwoip
@Nawaz는 3 가지 요소가 포함 된 strucutre에 대한 오버로드에 대해 비슷한 접근 방식을 제공 할 수 있습니다. – akashchandrakar
@aksam : 먼저 시도해보십시오. 그럼 이미 시도한 것을 알려주세요. 어쩌면 내가 도울거야. – Nawaz