我有一个运算符==重载的结构。
它在第一个条件下工作正常,但对于第二个条件,它根本不起作用。我做错了什么?
这是我的代码:
struct simpleLink {
int orig;
int dest;
set<int> commonKeys;
bool captured;
bool compromised;
bool operator<(const simpleLink& otherLink) const
{
if (orig == otherLink.orig) {
return dest < otherLink.dest;
}
return orig < otherLink.orig;
}
bool operator==(const simpleLink& otherLink) const
{
return ((orig == otherLink.orig) && (dest == otherLink.dest)) || ((orig == otherLink.dest) && (dest == otherLink.orig));
}
};
主:
int main() {
set<simpleLink> test;
simpleLink secureLink;
secureLink.orig = 0;
secureLink.dest = 1;
simpleLink secureLink2;
secureLink2.orig = 1;
secureLink2.dest = 0;
test.insert(secureLink);
test.insert(secureLink2);
cout << secureLink.orig << " " << secureLink.dest << endl;
cout << secureLink2.orig << " " << secureLink2.dest << endl;
cout << "Test Size:" << test.size() << endl;
return 0;
}
输出是:
0 1
1 0
Test Size: 2
大小应为1。
现在的问题是,我如何改变运营商&lt;所以 (0,1)=(0,1)和(0,1)=(1,0)