दोनों std::priority_queue
और std::set
(और std::multiset
) के बाद से डेटा कंटेनर है कि तत्वों की दुकान और आप उन्हें एक आदेश दिया फैशन में पहुंचने देते हैं, और एक ही प्रविष्टि जटिलता O(log n)
है कर रहे हैं, क्या कर रहे हैं दूसरे पर एक का उपयोग करने के फायदे (या, किस तरह की स्थितियों में एक या दूसरे के लिए कॉल?)? उनके प्रदर्शन और विभिन्न उपयोगों के लिए उपयुक्तताअंतर
जबकि मुझे पता है कि अंतर्निहित संरचना अलग हैं, मैं नहीं के रूप में ज्यादा उनके कार्यान्वयन में अंतर करने में रुचि के रूप में मैं तुलना में हूँ कर रहा हूँ।
नोट: मुझे एक सेट में नो-डुप्लिकेट के बारे में पता है। यही कारण है कि मैंने std::multiset
का भी उल्लेख किया क्योंकि इसका std::set
जैसा ही व्यवहार है लेकिन इसका उपयोग किया जा सकता है जहां संग्रहीत डेटा को समान तत्वों की तुलना करने की अनुमति है। तो कृपया, एकल/एकाधिक कुंजी मुद्दे पर टिप्पणी न करें।
प्राथमिकता कतार केवल * सबसे बड़ा * तत्व तक पहुंच प्रदान करती है, जबकि सेट आपको * सभी * तत्वों का पूर्ण क्रम देता है। यह कमजोर इंटरफ़ेस का अर्थ है कि कार्यान्वयन अधिक कुशल हो सकता है (उदा। आप वास्तविक कतार डेटा को 'वेक्टर' में संग्रहीत कर सकते हैं, जिसके मेमोरी इलाके के कारण बेहतर प्रदर्शन हो सकता है)। –
@ केरेकस्क एसबी सबसे विस्तृत उत्तर वास्तव में एक टिप्पणी है: डी ने किसी भी प्रदर्शन पर टिप्पणी नहीं की है। क्या आप इसे एक उत्तर में डाल सकते हैं, शायद थोड़ा विस्तार करें? – penelope
कुंजी मानक लाइब्रेरी बिंदु यह है कि 'प्राथमिकता_क्यू' ''' से 'हीप *' -ग्लोरिदम के संदर्भ में लागू किया गया है, जो अंतर्निहित यादृच्छिक-पहुंच कंटेनर पर लागू होता है। –