के साथ सी ++ न्यूनतम ढेर मैं एक संरचना प्रकार के लिए सी ++ में एक न्यूनतम ढेर को लागू करने की कोशिश कर रहा हूं। मैंने इस प्रकार का एक वेक्टर बनाया, लेकिन जब मैंने उस पर make_heap का उपयोग किया, तो यह क्रैश हो गया, जो समझ में आता है क्योंकि यह नहीं जानता कि ढेर में वस्तुओं की तुलना कैसे करें। एक संरचना प्रकार के लिए मैं एक मिनी-हीप (यानी, शीर्ष तत्व हमेशा ढेर में सबसे छोटा) कैसे बना सकता हूं?उपयोगकर्ता द्वारा परिभाषित प्रकार
struct नीचे है:
struct DOC{
int docid;
double rank;
};
मैं रैंक सदस्य का उपयोग डॉक्टर संरचनाओं की तुलना करना चाहते। यह मैं कैसे करूंगा?
मैं एक तुलनित्र वर्ग के साथ एक प्राथमिकता कतार उपयोग करने की कोशिश, लेकिन वह भी दुर्घटनाग्रस्त हो गया, और यह भी जब क्या मैं वास्तव में जरूरत है वैसे भी एक ढेर है जो उसके अंतर्निहित आधार के रूप में एक ढेर का उपयोग करता है एक डेटा संरचना का उपयोग करने मूर्खतापूर्ण लगता है।
आपको बहुत बहुत धन्यवाद, bsg
"यह क्रैश" की आपकी परिभाषा क्या है? निश्चित रूप से, यदि आपके पास कोई तुलना करने वाला फ़ैक्टर या ऑपरेटर नहीं है <फ़ंक्शन आपको * संकलन त्रुटियां * मिल रही हैं। – sellibitze
नहीं, मैं वास्तव में नहीं था। निश्चित रूप से प्राथमिकता कतार के साथ नहीं, जिस पर ओवरलोडेड ऑपरेटर परिभाषित था, और मैं make_heap के साथ भी नहीं सोचता। हालांकि यह हो सकता है कि बाद के मामले में मुझे संकलन त्रुटि मिली। पहली बार, हालांकि, यह ठीक संकलित लेकिन रनटाइम पर दुर्घटनाग्रस्त हो गया। – bsg
यदि आप केवल दो तर्कों के साथ make_heap का उपयोग करने का प्रयास करते हैं, तो आपके पास अपने स्ट्रक्चर प्रकार के लिए ऑपरेटर <होना चाहिए। यदि आप नहीं करते हैं, तो आपको संकलन त्रुटियां मिलेंगी। इतना ही आसान। – sellibitze