【发布时间】:2012-05-01 10:57:53
【问题描述】:
可能重复:
Does std::vector.clear() do delete (free memory) on each element?
我有一张地图,其中第二个元素是堆分配的。
我应该在迭代时显式调用delete 还是方法erase() 和clear() 为我这样做?
这是我的析构函数,它会删除分配给 new 的第二个元素
~Event()
{
auto iter = mapper.begin();
while (iter != mapper.end())
{
mapper.erase(iter++); // heap object
}
}
【问题讨论】:
-
“我有一张地图,其中第二个元素是堆分配的”。可能你的意思是你有一个映射,其中第二个(值)元素是指针,它指向你从堆中分配的东西?如果容器的元素具有指针类型,则元素就是指针。他们可能指向或未指向的任何东西都不是容器的一部分,当然也不是容器的元素。
标签: c++ dictionary iterator delete-operator