के साथ ओवरलोडिंग यह प्राथमिकता कतार का उपयोग करने वाला मेरा पहला समय है। मैं स्कूल के लिए डिजस्ट्रा के एल्गोरिदम को लागू करने की कोशिश कर रहा हूं और मुझे लगा कि मुझे ऐसा करने के लिए एक न्यूनतम ढेर की आवश्यकता है। अभी मेरे नोड्स पॉइंटर्स हैं और मैं उनके वजन की तुलना करना चाहता हूं, लेकिन मुझे नहीं लगता कि मैं ओवरलोड कर सकता हूं> और < पॉइंटर्स के साथ? क्या ऐसा कोई तरीका है जिसे मैं पूरा कर सकता हूं?एसटीएल प्राथमिकता कतार और पॉइंटर्स
कोड इतनी दूर:
priority_queue<Node*, vector<Node*>, node_comparison> minHeap;
और फिर मैं नोड के वजन
struct node_comparison
{
bool operator<(const Node* a, const Node* b) const
{
return a->totalWeight < b->totalWeight;
}
};
तुलना करने के लिए एक struct है लेकिन यह कहना है कि यह ऑपरेटर समारोह के लिए भी कई मापदंडों देखते हैं। मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं थोड़ी देर के लिए अपने नोड्स के साथ एक न्यूनतम ढेर प्राथमिकता कतार कैसे प्रबंधित कर सकता हूं और अटक रहा हूं। कोई विचार?
वास्तविक त्रुटि क्या है? –
[प्रलेखन] में (http://en.cppreference.com/w/cpp/container/priority_queue/priority_queue), देखें [उदाहरण] (http://en.cppreference.com/w/cpp/container/ preferences_dd :: कम '] (http://en.cppreference.com/w/cpp/utility/functional/less) का उपयोग करता है। आपको 'नोड *' के लिए [कुछ समान] लागू करना होगा (http://en.cppreference.com/w/cpp/utility/functional/less#Possible_implementation)। –