【发布时间】:2015-09-11 07:57:39
【问题描述】:
我正在调试一个与std::list::erase 方法有关的内存问题。
在阅读std::list::erase 的文档时,我看到了this statement:
“这有效地减少了容器大小,减少了被删除的元素数量。”
我很难理解这句话。例如,考虑以下设置:
class demo {
};
std::list<demo *> mylist;
现在,假设我打电话给mylist.erase(iterator of list)。我以为这会调用类 demo 的析构函数,但似乎没有,这似乎与“已销毁”的说法相矛盾。
你能帮我解决这个问题吗?
谢谢!
【问题讨论】:
-
指针被销毁(这是一个无操作)。指针不是。 (这是一个很好的例子,说明为什么你不应该使用拥有原始指针——尤其是它们的容器。)
标签: c++ list pointers std destructor