[英]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.