मैं स्ट्रिंग मानों को MyType *
पर मैप करने के लिए std::map
का उपयोग कर रहा हूं। मेरे मानचित्र घोषणा इस तरह दिखता है:पॉइंटर मानों वाले मानचित्र को नष्ट करने का उचित तरीका
map<string, MyType *> *my_map = new map<string, MyType>;
my_map
मेरी वर्गों में से एक के लिए एक निजी सदस्य चर रहा है। मेरी समस्या यह है कि मैं मानचित्र को नष्ट करने के बारे में अनिश्चित हूं। मानचित्र को हटाते समय, मैं मानचित्र में निहित MyType *
पर delete
पर भी कॉल करना चाहूंगा।
my_map->erase(my_map->begin(), my_map->end());
delete my_map;
इस संकेत दिए गए मानचित्र में निहित नष्ट करेगा, या मैं मिटा कॉल करने से पहले मानचित्र के माध्यम से पुनरावृति करने के लिए प्रत्येक सूचक हटाने की आवश्यकता है: यहाँ मेरे वर्तमान नाशक है?
बाद में - 'मानचित्र' (और मानक लाइब्रेरी में अधिकांश (यदि नहीं सभी?) कंटेनर) को विनाश पर शामिल किसी भी सूचक को हटाने के लिए डिज़ाइन नहीं किया गया है। – Nbr44
ठीक है धन्यवाद। जिस दस्तावेज़ पर मैंने पढ़ा था वह बहुत स्पष्ट नहीं था। यह पढ़ता है: 'यह प्रभावी रूप से हटाए गए तत्वों की संख्या से कंटेनर आकार को कम कर देता है, जो नष्ट हो जाते हैं।' – Max
यह एक आम गलतफहमी है - _pointers_ स्वयं वास्तव में नष्ट हो जाते हैं, लेकिन यह उस स्मृति स्थान की स्थिति को नहीं बदलता है जो वे इंगित करते हैं । – Nbr44