2013-11-28 27 views
5

मेरे पास कक्षा है class stuff{ int id; int ammount; int quality; /*...*/ }; और मेरे पास vector<stuff> items है। मैं अपने संग्रह को stuff::id द्वारा क्रमबद्ध बनाना चाहता हूं और staff::id द्वारा खोज योग्य बनाना चाहता हूं। मैं इसे find_if के माध्यम से कर सकता हूं और कुछ सॉर्टिंग विशेष एसएलएल लैम्ब्डा आधारित फ़ंक्शन का उपयोग करके सॉर्ट कर सकता हूं। फिर भी मैं इसे वेक्टर में डिफ़ॉल्ट रूप से रखना चाहता हूं। मैंने सुना है कि हैशिंग फ़ंक्शन बनाने का कोई तरीका है, फिर भी मैंने खोज की है कि यह चारों ओर नहीं मिल सका ... तो डिफ़ॉल्ट वेक्टर फ़ंक्शंस के साथ वेक्टर के अंदर वर्ग क्रमबद्ध/खोजने योग्य कैसे बनाएं?वेक्टर के अंदर वर्ग क्रमबद्ध कैसे करें?

+0

'सामान :: ऑपरेटर <(कॉन्स स्टफ और वह)' को परिभाषित करें जो 'यह-> आईडी

+1

क्या आप इसके बजाय 'std :: map ' का उपयोग कर सकते हैं? – Nawaz

+0

यहां बताया गया है कि मेरी कक्षा का उपयोग करने के लिए मेरी नक्शा का उपयोग करने में सक्षम होने के लिए 'मैप'' जोड़ी :: पहले', मेरे buisness तर्क द्वारा परिभाषित कक्षा द्वारा सभी मूल कंटेनरों की खोज करने के लिए - सामान्य चींटियों और तार। – DuckQueen

उत्तर

6

छँटाई के लिए, एक operator< कि दो संरचनाओं तुलना लागू:

bool operator<(const stuff& s1, const stuff& s2) 
{ 
    // Your comparison here 
} 

इस ऑपरेटर है कि सभी छँटाई के अधिकांश के लिए डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है।

समानता जांच के लिए, operator== इसी तरह बनाएं।

संबंधित मुद्दे