可能重複:
Does std::vector.clear() do delete (free memory) on each element?STL容器的Clear()方法調用堆對象的刪除嗎?
我有地圖,其中第二元件是堆分配。
迭代時我應該明確地調用delete
還是方法erase()
和clear()
對我這麼做?
這裏是我的析構函數刪除其第二個元素是與new
~Event()
{
auto iter = mapper.begin();
while (iter != mapper.end())
{
mapper.erase(iter++); // heap object
}
}
「我有一張地圖,其中第二個元素是堆分配的」。可能你的意思是你有一張地圖,其中第二個(值)元素是指針,指向你從堆中分配的東西?如果一個容器的元素有一個指針類型,那麼元素就是指針。任何他們可能指出或不指出的東西都不是容器的一部分,當然也不是它的一個元素。 –