वैसे मेरी कक्षा के छात्र मुझे यह समझाने में असमर्थ हैं कि वेक्टर्स का उपयोग करना अधिक प्रभावी है, लेकिन वे मुझे सूचियों का उपयोग करने की सलाह देते हुए काफी खुश दिखते हैं।
यह मैं इसे समझता हूं
सूचियाँ : प्रत्येक आइटम में अगले या पिछले तत्व का एक पता होता है, इसलिए इस सुविधा के साथ, आप आइटम को यादृच्छिक कर सकते हैं, भले ही वे क्रमबद्ध न हों, क्रम परिवर्तित नहीं होगा: यदि आप स्मृति खंडित है तो यह कुशल है। लेकिन इसका एक और बहुत बड़ा फायदा भी है: आप आसानी से आइटम सम्मिलित / हटा सकते हैं, क्योंकि केवल एक चीज जो आपको करने की आवश्यकता है वह है कुछ संकेत। खामी: एक यादृच्छिक एकल आइटम को पढ़ने के लिए, आपको सही पता मिलने तक एक आइटम से दूसरे आइटम पर कूदना होगा।
वैक्टर : वैक्टर का उपयोग करते समय, मेमोरी को नियमित सरणियों की तरह अधिक व्यवस्थित किया जाता है: प्रत्येक एन-वें आइटम को थ्रेड (n-1) वें आइटम के बाद और पहले (n + 1) वें आइटम में संग्रहीत किया जाता है। यह सूची से बेहतर क्यों है? क्योंकि यह तेज़ रैंडम एक्सेस की अनुमति देता है। यहां बताया गया है कि: यदि आप किसी वेक्टर में किसी आइटम का आकार जानते हैं, और यदि वे मेमोरी में सन्निहित हैं, तो आप आसानी से अनुमान लगा सकते हैं कि एन-वें आइटम कहां है; आप जिस सूची को चाहते हैं, उसे पढ़ने के लिए आपको किसी सूची के सभी आइटम को ब्राउज़ करने की आवश्यकता नहीं है, वेक्टर के साथ, आप सीधे इसे पढ़ सकते हैं, एक सूची जिसके साथ आप नहीं कर सकते। दूसरी ओर, वेक्टर सरणी को संशोधित करें या एक मान बदलें जो बहुत अधिक धीमा है।
उन वस्तुओं पर नज़र रखने के लिए सूचियाँ अधिक उपयुक्त हैं जिन्हें स्मृति में जोड़ा / हटाया जा सकता है। जब आप किसी एकल आइटम की एक बड़ी मात्रा से एक तत्व का उपयोग करना चाहते हैं तो वैक्टर अधिक उपयुक्त होते हैं।
मुझे नहीं पता है कि सूचियों को कैसे अनुकूलित किया जाता है, लेकिन आपको यह जानना होगा कि यदि आप फास्ट रीड एक्सेस चाहते हैं, तो आपको वैक्टर का उपयोग करना चाहिए, क्योंकि एसटीएल फास्टन की सूचियों को कितना अच्छा करता है, यह वेक्टर की तुलना में रीड-एक्सेस में उतना तेज़ नहीं होगा।