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)