क्या मुझे वेक्टर के बजाय डेक का उपयोग करना चाहिए यदि मैं कंटेनर की भिखारी में भी तत्वों को धक्का देना चाहता हूं? मुझे सूची का उपयोग कब करना चाहिए और इसका क्या मतलब है?एसटीएल कंटेनर - वेक्टर, सूची और डेक के बीच अंतर
उत्तर
deque
का उपयोग करें यदि आपको अनुक्रम और यादृच्छिक पहुंच की शुरुआत और अंत में कुशल सम्मिलन/निष्कासन की आवश्यकता है; list
का उपयोग करें यदि आपको यादृच्छिक पहुंच के बलिदान पर कहीं भी कुशल सम्मिलन की आवश्यकता है। list
तत्वों के इटरेटर और संदर्भ कंटेनर के लगभग किसी भी उत्परिवर्तन के तहत बहुत स्थिर हैं, जबकि deque
में बहुत ही असाधारण इटरेटर और संदर्भ अमान्यता नियम हैं (इसलिए सावधानीपूर्वक जांचें)।
इसके अलावा, list
एक नोड आधारित कंटेनर, जबकि एक deque
सन्निहित स्मृति का हिस्सा का उपयोग करता है, तो स्मृति इलाके प्रदर्शन प्रभाव है कि asymptotic जटिलता अनुमानों के अनुसार काटा नहीं जा सकता हो सकता है।
deque
लगभग हर जगह vector
के प्रतिस्थापन के रूप में कार्य कर सकता है और शायद सी ++ में "डिफ़ॉल्ट" कंटेनर माना जा सकता है (इसकी अधिक लचीली स्मृति आवश्यकताओं के कारण); vector
को प्राथमिकता देने का एकमात्र कारण यह है कि जब आपके अनुक्रम का एक गारंटीकृत संगत स्मृति लेआउट होना चाहिए।
deque
और vector
यादृच्छिक पहुंच प्रदान करते हैं, list
केवल रैखिक पहुंच प्रदान करता है। इसलिए यदि आपको कंटेनर करने में सक्षम होना चाहिए [i], तो list
का नियम है। दूसरी ओर, आप कहीं भी list
में आइटम को सम्मिलित और हटा सकते हैं, और vector
और deque
के बीच में ऑपरेशन धीमे हैं।
deque
और vector
बहुत समान हैं, और मूल रूप से अधिकांश उद्देश्यों के लिए अदला-बदले हैं। उल्लेख करने के लायक केवल दो मतभेद हैं। सबसे पहले, vector
केवल कुशलता से अंत में नई आइटम जोड़ सकता है, जबकि deque
किसी भी अंत में कुशलता से आइटम जोड़ सकता है। तो फिर आप कभी भी vector
का उपयोग क्यों करेंगे? deque
के विपरीत, vector
गारंटी देता है कि सभी आइटम संगत स्मृति स्थानों में संग्रहीत किए जाएंगे, जो कुछ स्थितियों में तेज़ी से तेज़ी से चलते हैं।
- 1. सी ++ एसटीएल वेक्टर/सूची कंटेनर के लिए पाइथन समतुल्य
- 2. एसटीएल कंटेनर
- 3. स्थिरांक और एसटीएल कंटेनर
- 4. कंटेनर और रैपर के बीच अंतर
- 5. ग्रहण सीडीटी एसटीएल कंटेनर
- 6. क्या एसटीएल कंटेनर के बीच तत्वों को हटाने के लिए?
- 7. सी ++ एसटीएल कंटेनर
- 8. सी # कंटेनर - वेक्टर ,. सूची, कतार, ढेर इत्यादि
- 9. सी ++ डिजाइनिंग कंटेनर और प्रबंधन सूची वापसी
- 10. एसटीएल वेक्टर बनाम नक्शा मिटा
- 11. एसटीएल स्टैक और प्राथमिकता_क्यू
- 12. एसटीएल कंटेनर की बाइनरी संगतता
- 13. एसटीएल-संगत कंटेनर
- 14. "कंटेनर" और "डेटा संरचना" के बीच क्या अंतर है?
- 15. वेब सर्वर, वेब कंटेनर और अनुप्रयोग सर्वर के बीच अंतर
- 16. वेब-सर्वर और सर्वलेट कंटेनर के बीच अंतर
- 17. डाटाबेसर के बीच क्या अंतर है। औसत और कंटेनर। डेटाटाइम?
- 18. एक एसटीएल वेक्टर
- 19. एसटीएल एक वेक्टर क्लोनिंग
- 20. वेक्टर और वर्टेक्स के बीच क्या अंतर है?
- 21. वेक्टर और स्टैक के बीच बड़ा अंतर क्या है?
- 22. एसटीएल कंटेनर असाइनमेंट और स्थिरांक संकेत
- 23. एक निश्चित आकार सूची के लिए उपयोग करने के लिए कौन सा एसटीएल सी ++ कंटेनर?
- 24. एसटीएल कंटेनर, SBO और कस्टम संभाजक विरोध करता है
- 25. डीएलएल सीमा पर एसटीएल सूची का खुलासा कैसे करें?
- 26. एक वेक्टर और अन्य वेक्टर के प्रत्येक तत्व के बीच न्यूनतम अंतर ढूँढना
- 27. एसटीएल कंटेनर कैसे फोल्ड करें?
- 28. डिस्क-समर्थित एसटीएल कंटेनर कक्षाएं?
- 29. एसटीएल कंटेनर में लगातार संदर्भ
- 30. पॉइंटर्स की एक एसटीएल सूची/वेक्टर की सफाई
'वेक्टर' लगभग हमेशा मेरे अनुभव में 'डेक' से बेहतर प्रदर्शन करता है। –
@ डोनरेबा: यह उपयोग के मामले पर निर्भर करता है, और प्रोफाइलिंग वास्तव में एकमात्र उत्तर है। यदि आप एक बड़ी रेंज आवंटित करना चाहते हैं, तो एक वेक्टर संघर्ष कर सकता है, जबकि डेक पुराने लोगों को स्थानांतरित किए बिना नए हिस्से आवंटित कर सकता है। और निश्चित रूप से यह निर्भर करता है कि आप क्या कर रहे हैं। –