我与我的同事讨论了如何删除地图中的条目,地图将int作为索引,指针指向对象.
我说,先释放对象,然后删除该条目.我的同事说先删除条目然后释放对象.
那么最好的方法是什么?这个问题的任何技巧?
首先删除对象,然后从地图中删除.否则你只是引入一个无意义的中间变量来存储指针.只要您是单线程的,或者在多线程场景中具有适当的锁定,这两种方法就可以用于所有实用目的.
map<int, A *>::iterator it = mymap.find(1);
if (it != mymap.end()) {
delete it->second;
mymap.erase(it);
}
Run Code Online (Sandbox Code Playgroud)