मान लीजिए कि मेरे पास क्लास इंस्टेंस के पॉइंटर्स के unordered_map
हैं, तो उस मानचित्र से किसी ऑब्जेक्ट को मिटाना भी उदाहरण को मिटा देगा?std :: unordered_map <std :: स्ट्रिंग, myClass *> - std :: unordered_map :: मिटाएं() myClass 'DTor को कॉल करता है?
(प्रश्न को दोबारा दर्ज करना :) अगर मैं उस उदाहरण को हटाना चाहता हूं, तो कौन सा संस्करण सही होगा?
if(it != map.end())
{
delete it->second;
map.erase(it);
}
या बस
if(it != map.end())
map.erase(it);
?
अद्यतन: जैसा कि कई लोगों द्वारा सुझाया गया है, मैं shared_ptr
का उपयोग करने के लिए चला गया, और यह बहुत अच्छा काम करता है!
'मिटाएं' पॉइंटर को रिसाव करेगा। 'Unique_ptr' के मानचित्र का उपयोग करने पर विचार करें। –
यदि इसे पॉइंटर्स का स्वामित्व लेने की आवश्यकता है, तो 'unique_ptr' का उपयोग क्यों न करें, जो आपके लिए ऑब्जेक्ट को हटा देगा? – MicroVirus
धन्यवाद। नक्शा केवल एक लुकअप-बाय-नाम है, मेरे बाकी ऐप को पॉइंटर्स का उपयोग करने की आवश्यकता है, इसलिए मैं एक मुक्त पॉइंटर का उपयोग न करने के लिए अन्य सावधानी बरतता हूं। – St0fF