के साथ std :: unorded_set की तुलना नहीं कर सकता निम्न प्रोग्राम संकलित नहीं करता है। लेकिन अगर मैं operator==
पर टिप्पणी नहीं करता, तो यह संकलित करता है। क्यों operator==
अभी भी जरूरत है जब मैं पहले से ही http://en.cppreference.com/w/cpp/container/unordered_set/operator_cmp के अनुसार FooEqual
कस्टम keyEqual
#include <cstddef>
#include <unordered_set>
struct Foo {
};
struct FooHasher {
size_t operator()(const Foo&) const {
return 1;
}
};
struct FooEqual {
bool operator()(const Foo& lhs, const Foo& rhs) const {
return true;
}
};
// bool operator==(const Foo& lhs, const Foo& rhs) {
// return true;
// }
int main() {
std::unordered_set<Foo, FooHasher, FooEqual> s1;
std::unordered_set<Foo, FooHasher, FooEqual> s2;
(void)(s1 == s2);
return 0;
}
कार्यान्वयन में एक बग होना चाहिए ... जब तक कि स्पेक कहता है कि 'केक्वेक्ल' का उपयोग केवल सम्मिलन/लुकअप के लिए किया जाता है और यह कि 'std :: unordered_set :: ऑपरेटर ==' जांचता है कि क्या दो सेट बराबर हैं या नहीं व्यक्तिगत तत्व बराबर तुलना करते हैं? यहां एक सी ++ भाषा वकील की आवश्यकता हो सकती है। – dreamlax