【发布时间】:2016-07-22 20:33:18
【问题描述】:
例如:
map<string, Person*> family;
family["Bill"] = new Person();
family["Jill"] = new Person();
...
// vvv does not work vvv
for (Person* person: family)
delete person;
我正在尝试通过映射执行 for-each 循环,以释放所有指针的内存。这适用于矢量,但不适用于地图。我怎样才能做到这一点?
【问题讨论】:
-
如果你在任何搜索引擎中输入你的标题,你会发现很多方法
-
您查看
std::map的value_type是什么,然后使用auto。你就是这样做的。 -
为什么不让地图保存智能指针而不是原始指针?那么仅仅清除地图就会导致智能指针释放它们的资源。
-
使用智能指针或按值存储Person,内存会自动为你释放。
-
大家想说什么,don't use pointers。
标签: c++ dictionary stl