簡體   English   中英

使用自定義比較功能設置相等

[英]Set equality with custom compare function

我正在使用一組用戶定義的類型和一個自定義比較功能。 當我嘗試在集合之間使用==運算符時,出現編譯時錯誤。 我想念什么?

#include <cassert>
#include <set>

// my user-defined type
struct IntWrapper {
    int value;
};

// my compare function
struct LessComparer {
    bool operator()(const IntWrapper& lhs, const IntWrapper& rhs) const {
        return lhs.value < rhs.value;
    }
};

int main() {
    std::set<IntWrapper, LessComparer> s;
    assert(s == s);  // I would expect this to work
}

在這里您可以看到錯誤。

http://en.cppreference.com/w/cpp/container/set/operator_cmp

密鑰必須滿足EqualityComparable的要求才能使用重載(1-2)。

http://en.cppreference.com/w/cpp/concept/EqualityComparable

如果滿足以下條件,則類型T滿足EqualityComparable
給定a,b和c,類型為T或const T的表達式
以下表達式必須有效並具有指定的作用:
a == b

因此,您需要為IntWrapper類型定義operator==

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM