我们应该在向量中删除指针之前或之后删除吗?

pie*_*fou 5 c++ vector delete-operator

我们应该在之前还是之后删除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???
}
Run Code Online (Sandbox Code Playgroud)

Vik*_*ehr 10

"itr"必须像这样使用;

for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); )
{
   delete (*itr);
   itr = bar.erase(itr);
}
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿先删除所有元素,然后清除向量;

for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); ++itr)
   delete (*itr);
bar.clear();
Run Code Online (Sandbox Code Playgroud)