चूंकि एक कंटेनर के लिए केवल एक स्टैक में उपयोग किए जाने वाले आवश्यक संचालन हैं:
- वापस()
- पीछे धकेलना()
- pop_back ()
एक वेक्टर के बजाय एक डिक्स के लिए डिफ़ॉल्ट कंटेनर क्यों है?
सामने वाले () से पहले तत्वों का बफर न दें, ताकि पुश_फ्रंट () एक कुशल संचालन हो? इन तत्वों को बर्बाद नहीं किया जाता है क्योंकि वे कभी एक स्टैक के संदर्भ में उपयोग नहीं किए जाएंगे?
यदि वेक्टर के बजाय इस तरह से एक deque का उपयोग करने के लिए कोई ओवरहेड नहीं है, तो प्राथमिकता के लिए डिफ़ॉल्ट क्यों है_ एक वेक्टर भी एक deque नहीं है? (प्रायोरिटी_क्व्यू के लिए फ्रंट (), पुश_बैक (), और पॉप_बैक () की आवश्यकता होती है - अनिवार्य रूप से स्टैक के लिए समान है)
नीचे दिए गए उत्तरों के आधार पर अपडेट किया गया:
ऐसा प्रतीत होता है कि जिस तरह से डॉक आमतौर पर लागू किया जाता है वह निश्चित आकार के सरणियों का एक चर आकार का सरणी है। यह एक वेक्टर की तुलना में तेजी से बढ़ रहा है (जिसके लिए वास्तविककरण और प्रतिलिपि बनाने की आवश्यकता होती है), इसलिए एक स्टैक की तरह कुछ के लिए जो तत्वों को जोड़ने और हटाने के बारे में है, deque एक बेहतर विकल्प है।
प्रायोरिटी_क्व्यू में भारी इंडेक्सिंग की आवश्यकता होती है, क्योंकि हर हटाने और डालने के लिए आपको pop_heap () या push_heap () चलाना पड़ता है। यह शायद वेक्टर को एक बेहतर विकल्प बनाता है क्योंकि एक तत्व को जोड़ना अभी भी लगातार स्थिर है।