2013-02-02 12 views
16

मैं क्लोजर के लिए नया हूं। क्षमा करें अगर यह एक बेवकूफ सवाल है!क्लोजर सूची बनाम वेक्टर बनाम सेट

क्या मुझे हर बार एक वेक्टर या सूची के बजाय सेट का उपयोग करना चाहिए जब मुझे वस्तुओं के आदेश की परवाह नहीं है? ऑर्डर आवश्यक नहीं होने पर इन तीनों के बीच फैसला करने के लिए सामान्य मानदंड क्या हैं?

+1

धन्यवाद दोस्तों, सभी महान उत्तरों मैंने हर जवाब को ऊपर उठाया। – Blacksad

उत्तर

19

यह वास्तव में इस बात पर निर्भर करता है कि आप आइटम का उपयोग कैसे करेंगे।

  • यदि आप आइटम खोज रहे हैं, तो एक सेट का उपयोग करें।
  • यदि आप इसे संसाधित करेंगे तो अनुक्रमिक रूप से एक सूची का उपयोग करें।
  • यदि आप इसे आकार के टुकड़ों में भी चिपकाएंगे (जैसे सॉर्टिंग करते समय) वेक्टर का उपयोग करें।
  • यदि आपको लंबाई का उपयोग वेक्टर की गणना करने की आवश्यकता है।
  • आप अपनी ओर से इन

(एक छोटे से हवाले से बचाने के लिए) व्यवहार में एक सदिश का उपयोग टाइपिंग किया जाएगा प्रसंस्करण मैं देख रहा हूँ एक seq और प्रसंस्करण में डेटा मोड़ शामिल है का सबसे कि इतने सूची के बीच भेद और वेक्टर अक्सर व्यक्तिगत स्वाद एक मामला है।

+3

सेट भी गिना जाता है। – amalloy

+1

सूचियां भी गिना जाता है। – kotarak

9

सामान्य रूप से, आप एक सेट चाहते हैं जब आपकी प्राथमिक चिंता "क्या यह समूह इस समूह में है?" आदेश को संरक्षित करने के अलावा, सेट केवल एक बार एक मान दिया जाता है। तो यदि आप मूल्यों के सटीक प्लेसमेंट की परवाह करते हैं, तो वेक्टर जितना अधिक चाहते हैं उतना अधिक है। यदि आप मुख्य रूप से सदस्यता के लिए परीक्षण की परवाह करते हैं, तो एक सेट अधिक उपयुक्त है।

2

हां, एक सेट का उपयोग करें। जब तक आपके पास कुछ और नहीं चुनने के बहुत अच्छे कारण हैं (प्रदर्शन, स्मृति उपयोग, ...) सेट सही विकल्प है।

याद रखें कि प्रोग्रामिंग मुख्य रूप से आपके कोड के मानव पाठक के साथ संचार करने के बारे में है, न कि कंप्यूटर के साथ। एक सेट का उपयोग करके आप इसे पूरी तरह से स्पष्ट करते हैं कि तत्वों का क्रम अप्रासंगिक है (और आप डुप्लिकेट मानों की अपेक्षा नहीं कर रहे हैं) पाठक को आपके इरादे और अपने मानसिक दिमाग को समझने में मदद करते हैं।

संबंधित मुद्दे