结构运算符==在集合

时间:2015-10-25 21:57:28

标签: c++

我有一个运算符==重载的结构。

它在第一个条件下工作正常,但对于第二个条件,它根本不起作用。我做错了什么?

这是我的代码:

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)

0 个答案:

没有答案