我有一个map<long,myClass *> myMap;
myMap的元素是动态分配的:myMap[1] = new myClass();
等
我想删除分配给myMap
元素的所有内存。
可以使用myMap.erase(myMap.begin(),myMap.end());
最佳答案
您必须先删除所有那些动态分配的元素,否则可能会泄漏内存。
for (std::map<long,myClass *>::iterator iter = myMap.begin();
iter != myMap.end(); ++iter)
{
delete (*iter).second;
}
myMap.clear();
更好的方法是改为使用智能指针:
std::map<long, std::shared_ptr<myClass> > myMap;
std::shared_ptr<myClass> p(new myClass());
myMap[1] = p;
myMap.clear(); // no need to call delete manually anymore, clear is enough
关于c++ - 删除标准库图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14181216/