मैं वास्तव में "यह निर्भर करता है" से असहमत होगा। कभी भी विकल्प 2 का उपयोग न करें। यदि आप एक अनुवाद समय निरंतर उपयोग करना चाहते हैं, तो हमेशा विकल्प 1 या std :: सरणी का उपयोग करें। आपके द्वारा सूचीबद्ध एक लाभ, गतिशील सरणी आवंटित होने तक कुछ भी वजन नहीं लेती है, वास्तव में एक भयानक, भारी नुकसान है, और जिस पर बहुत जोर दिया जाना चाहिए।
कभी ऐसी वस्तुओं नहीं हैं जिनमें निर्माण के एक से अधिक चरण हैं। कभी नहीं। यह कुछ बड़े टैटू के माध्यम से स्मृति के लिए प्रतिबद्ध नियम होना चाहिए। बस इसे कभी मत करो।
आप लाश वस्तुओं है कि अभी तक काफी जिंदा नहीं हैं है, हालांकि काफी या तो मरा नहीं, अपने जीवन के प्रबंधन में जटिलता तेजी से बढ़ता है। आपको हर विधि में जांच करनी है कि क्या यह पूरी तरह जिंदा है, या केवल जीवित होने का नाटक करता है। अपवाद सुरक्षा को आपके विनाशक में विशेष मामलों की आवश्यकता होती है। एक साधारण निर्माण और स्वचालित विनाश के बजाय, अब आप उन आवश्यकताओं को जोड़ चुके हैं जिन्हें एन अलग-अलग स्थानों (# विधियों + डीटीओआर) पर जांचना चाहिए। और यदि आप जांचते हैं तो संकलक परवाह नहीं है। और अन्य इंजीनियरों के पास यह आवश्यकता प्रसारण नहीं होगी, इसलिए वे जांच के बिना चर का उपयोग करके असुरक्षित तरीके से अपना कोड समायोजित कर सकते हैं। और अब इन सभी विधियों के पास ऑब्जेक्ट की स्थिति के आधार पर कई व्यवहार हैं, इसलिए ऑब्जेक्ट के प्रत्येक उपयोगकर्ता को यह जानने की आवश्यकता है कि क्या उम्मीद करनी है। लाश आपके (कोडिंग) जीवन को बर्बाद कर देंगे।
इसके बजाय, यदि आप अपने कार्यक्रम में दो अलग-अलग प्राकृतिक जीवन काल है, दो अलग अलग वस्तुओं का उपयोग करें। लेकिन इसका मतलब है कि आपके कार्यक्रम में आपके दो अलग-अलग राज्य हैं, इसलिए आपके पास एक राज्य मशीन होनी चाहिए, जिसमें एक राज्य में केवल एक वस्तु हो और दोनों के साथ एक अन्य राज्य, एक असीमित घटना से अलग हो। यदि दो बिंदुओं के बीच कोई असीमित घटना नहीं है, यदि वे सभी एक कार्यक्षेत्र में फिट बैठते हैं, तो पृथक्करण कलात्मक है और आपको एकल चरण निर्माण करना चाहिए।
एकमात्र मामला जहां एक अनुवाद समय आकार को गतिशील आवंटन में अनुवाद करना चाहिए, जब आकार ढेर के लिए बहुत बड़ा होता है। इसके बाद यह मेमोरी ऑप्टिमाइज़ेशन हो जाता है, और यह देखने के लिए कि सबसे अच्छा क्या है, इसे स्मृति और प्रोफाइलिंग टूल का उपयोग करके हमेशा मूल्यांकन किया जाना चाहिए। विकल्प 2 कभी भी सर्वश्रेष्ठ नहीं होगा (यह एक नग्न सूचक का उपयोग करता है - इसलिए फिर हम आरएआईआई और किसी भी स्वचालित सफाई और प्रबंधन को खो देते हैं, इनवेरिएंट जोड़ते हैं और कोड को अधिक जटिल और आसानी से दूसरों द्वारा तोड़ने योग्य बनाते हैं)। वेक्टर (जैसा बिटकमास्क द्वारा सुझाया गया है) उपयुक्त पहला विचार होगा, हालांकि आपको समय में ढेर आवंटन लागत पसंद नहीं आती है। अन्य विकल्प आपके एप्लिकेशन की छवि में स्थैतिक स्थान हो सकते हैं। लेकिन फिर, इन्हें केवल तभी माना जाना चाहिए जब आप यह निर्धारित कर लें कि आपके पास स्मृति की बाधा है और वहां से क्या करना चाहिए, वास्तविक मापनीय आवश्यकताओं द्वारा निर्धारित किया जाना चाहिए।
आपके दो समाधान होना चाहिए: आपका पहला, या एक वेक्टर और कोई आकार_टी टेम्पलेट नहीं होना चाहिए।आपको कच्चे पॉइंटर्स का उपयोग करने से बचना चाहिए जहां किसी भी समस्या के बिना एक एसटीएल कंटेनर का उपयोग किया जा सकता है। – mfontanini
@ फ़ोंटानिनी: यदि आप सी ++ 11 के लिए संशोधित करना चाहते थे, तो दो समाधान 'std :: array' या 'std :: वेक्टर ' होना चाहिए। –
@ डेविडरोड्रिगुएज़-ड्राईबीस हां सर! – mfontanini