मुझे अपने आवेदन में सेट का एक सेट लागू करने की आवश्यकता है। कस्टम क्लास के साथ क्यूसेट का उपयोग करने के लिए qHash()
फ़ंक्शन और operator==
प्रदान करना आवश्यक है।एक QSet <SomeClass*> कंटेनर के लिए qHash कैसे लिखें?
class Custom{
int x;
int y;
//some other irrelevant here
}
inline uint qHash(Custom* c){
return (qHash(c->x)^qHash(c->y));
}
bool operator==(Custom &c1, Custom &c2){
return ((c1.x==c2.x) && (c1.y == c2.y));
}
//now I can use: QSet<Custom*>
मैं qHash(QSet<Custom*>)
कैसे लागू कर सकते हैं, QSet< QSet<SomeClass*> >
उपयोग करने के लिए सक्षम होने के लिए:
कोड इस प्रकार है?
संपादित करें:
अतिरिक्त प्रश्न: अपने आवेदन में "सेट के सेट" अप करने के लिए 15000 सेट हो सकते हैं। 25 कस्टम क्लास पॉइंटर्स तक प्रत्येक सबसेट। कैसे गारंटी है कि qHash(QSet<Custom*>)
पर्याप्त अद्वितीय होगा?
आप 'QSet' बारे में सुनिश्चित हैं: सौभाग्य से, दोनों (अहस्ताक्षरित) इसके अलावा और XOR आपरेशन सिर्फ बिल फिट? क्या यह 'QSet ' नहीं होना चाहिए? 'कस्टम' के लिए आपका 'ऑपरेटर ==' कभी भी 'क्यूहाश' द्वारा नहीं बुलाया जाएगा, क्योंकि यह पॉइंटर्स के लिए अंतर्निहित समानता ऑपरेटर का उपयोग करता है। –