【发布时间】:2010-09-17 06:24:21
【问题描述】:
我们应该在erase 之前还是之后删除。我的理解是两者都可以。这是正确的吗?
此外,是否存在我们不想在删除元素时删除它的情况?相信一定有,否则erase会很乐意承担责任。
std::vector<foo*> bar;
...
for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); itr++)
{
delete (*itr); //before OR
bar.erase(itr);
delete (*itr); //after???
}
【问题讨论】:
-
我相信你也有
iter++,否则循环不会终止。 -
未说明的上下文是向量中的指针是被删除内存的唯一所有者。
标签: c++ vector delete-operator