मैं स्मार्ट पॉइंटर्स (std::auto_ptr
) के बारे में सीख रहा हूं और बस here और here पढ़ता हूं कि स्मार्ट पॉइंटर्स (std::auto_ptr
) को कंटेनरों में नहीं रखा जाना चाहिए (यानी std::vector
) क्योंकि अधिकांश कंपाइलर शिकायत नहीं करेंगे और यह सही प्रतीत हो सकता है। ऐसा कोई नियम नहीं है जो कहता है कि स्मार्ट पॉइंटर्स को आंतरिक रूप से कॉपी नहीं किया जाएगा (उदाहरण के लिए vector
वर्ग द्वारा) और अपने स्वामित्व को स्थानांतरित करें, तो सूचक पूर्ण हो जाएगा। अंत में, सबकुछ खराब हो जाएगा।Std :: वेक्टर जैसे कंटेनर में स्मार्ट पॉइंटर्स?
हकीकत में, यह कितनी बार होता है?
कभी-कभी मेरे पास पॉइंटर्स के वैक्टर होते हैं और यदि भविष्य में मैं निर्णय लेता हूं कि मैं स्मार्ट पॉइंटर्स का वेक्टर रखना चाहता हूं तो मेरे विकल्प क्या होंगे?
मुझे सी ++ 0x और बूस्ट पुस्तकालयों के बारे में पता है, लेकिन अभी के लिए, मैं एक एसटीएल दृष्टिकोण से चिपकना पसंद करूंगा।
std :: tr1 (std :: tr1 :: shared_ptr) में स्मार्ट पॉइंटर्स भी हैं –
मैं वास्तव में एक स्मार्ट पॉइंटर 'auto_ptr' नहीं कहूंगा :) यह वास्तव में बहुत मूर्खतापूर्ण है, और इसलिए स्मार्ट पॉइंटर्स के बारे में अधिकतर सलाह नहीं दे सकती हैं (दुर्भाग्य से) इसके लिए लागू किया जाना चाहिए (इसकी खराब प्रतिलिपि semantics के कारण)। –