मैं आमतौर पर अनिश्चित हूं जब एक बनाम दूसरे का उपयोग करना बेहतर होता है। वे दोनों सामान्य रूप से एक ही चीज करते हैं लेकिन क्या वे कर सकते हैं के मामले में वेक्टर अधिक लचीला है? सरणी कब उचित हैं?वेक्टर का उपयोग कब करें और सी ++ में सरणी का उपयोग कब करें?
उत्तर
आम तौर पर हमेशा एक बार वेक्टर गुंजाइश बाहर चला जाता है और आबंटित स्मृति ढेर पर बड़े करीने से रखा जाएगा और सभी स्मृति नियंत्रित किया जाएगा std::vector<T>
का उपयोग कर के बाद से विनाश स्वत: हो जाएगा पसंद करते हैं तुम्हारे लिए। std::vector<T>
आपको एक सरणी में जो कुछ भी मिलता है और यहां तक कि एक गारंटी भी देता है कि तत्वों को स्मृति में संग्रहीत किया जाएगा (std::vector<bool>
को छोड़कर)। std::vector<bool>
सन्निहित bool
रों की दुकान नहीं है
std::vector<bool> vb;
vb.push_back(true);
vb.push_back(false);
vb.push_back(true);
bool *pB = &vb[0];
if(*(pB+1))
{
// do something
}
तथ्य है,:
std::vector<bool>
के मामले में आप सावधान के बाद से इस तरह कोड टूट जाएगा रहना होगा। यह मानक में एक अपवाद है जो सी ++ 11 में तय किया गया है।
सौभाग्य से 'std :: vector
@ के-बॉलो राइट में एक वास्तविक कंटेनर है, इसके लिए खाते में पोस्ट संपादित किया गया है।* के लिए –
+1 ** ढेर पर ** अच्छी तरह से ** रखा जाएगा * (जोर मेरा), जिसका अर्थ है कि गलती से सरणी के बाहर लिखना ढेर को तोड़ नहीं देगा। –
मैं एम्बेडेड सिस्टम के साथ काम करते समय केवल सरणी का उपयोग करता हूं, या जब कुछ एपीआई को इसकी आवश्यकता होती है (यानी उन्हें फ़ंक्शन के लिए तर्क के रूप में ले जाएं)। इसके अलावा, अगर केवल एक या दो स्थान हैं जहां मुझे सरणी का उपयोग करने की आवश्यकता होगी, या विशेष रूप से वेक्टर कार्यक्षमता की आवश्यकता नहीं है, तो वे vector.h के अतिरिक्त ओवरहेड की वजह से सरणी का उपयोग करने के लिए और अधिक समझ में आता है।
अन्यथा, बस वैक्टर :) का उपयोग
जब आप किसी सरणी की अपेक्षा करते हैं तो वे वैक्टर पास कर सकते हैं: 'someFunc (&v[0]); ' – chris
@chris, बहुत सच है। – kotakotakota
आपका दूसरा बिंदु मान्य है। इस पर निर्भर करता है कि आप कितनी बार और कितनी बार सरणी का उपयोग कर रहे हैं, साथ ही साथ कार्यक्रम की ज़रूरतें, वेक्टर का ऊपरी भाग अत्यधिक हो सकता है। – chris
- 1. ट्यूपल का उपयोग कब और कब करें?
- 2. बाइट सरणी का उपयोग कब करें, और स्ट्रीम का उपयोग कब करें?
- 3. सरणी का उपयोग कब और सेल सरणी का उपयोग कब करें?
- 4. सी # में कक्षाओं का उपयोग कब करें?
- 5. reinterpret_cast का उपयोग कब करें?
- 6. टैग/लेबल का उपयोग कब करें और शाखा कब करें?
- 7. "^" ऑपरेटर का उपयोग कब करें
- 8. 'zipmap` और जब' नक्शा वेक्टर 'का उपयोग कब करें?
- 9. [MTAThread] का उपयोग कब करें?
- 10. हाइबरनेट फ़ेचिंग रणनीति - "शामिल" का उपयोग कब करें और "चयन करें" का उपयोग कब करें?
- 11. isInstanceOf का उपयोग कब करें और मैच-केस-स्टेटमेंट (स्कैला में) का उपयोग कब करें?
- 12. घटकों का उपयोग कब करें और वाईआई में एक्सटेंशन का उपयोग कब करें?
- 13. डुप्ली का उपयोग कब करें, और रूबी में क्लोन का उपयोग कब करें?
- 14. सी # का उपयोग कब करें "यह" कीवर्ड
- 15. उदाहरण चर का उपयोग कब करें और गुणों का उपयोग कब करें
- 16. Request.RegisterForDispose का उपयोग कब करें?
- 17. Mockito.verify() का उपयोग कब करें?
- 18. का उपयोग कब करें hibernate.connection.provider_class
- 19. $ .extend ({...}) का उपयोग कब करें?
- 20. कीवर्ड का उपयोग कब करें
- 21. सी ++: पॉइंटर्स का उपयोग कब करें?
- 22. ओपनसीएल का उपयोग कब करें?
- 23. QueueUserAPC() का उपयोग कब करें?
- 24. ko.utils.unwrapObservable का उपयोग कब करें?
- 25. फ़िल्टर_इनपुट का उपयोग कब करें()
- 26. बाहरी "सी" का उपयोग कब करें?
- 27. "हटाएं" का उपयोग कब करें?
- 28. मल्टीथ्रेड का उपयोग कब करें?
- 29. स्ट्रिंगबिल्डर का उपयोग कब करें?
- 30. सी ++ में "नया" और कब नहीं, कब उपयोग करें?
लगभग कभी भी ऐरे का उपयोग नहीं करना मेरा सुझाव है। लेकिन, सरणी से आपका मतलब है 'टाइप करें [] 'या' std :: array'? –
@ रिचर्ड जे। रॉसआईआईआई प्रकार [] –
सी ++ भावना में वेक्टर और एरे के बीच मुख्य अंतर यह है कि वेक्टर स्वचालित गतिशील स्मृति प्रबंधन करते हैं, जबकि सरणी तय की जाती है। – chris