我们应该删除在向量中的指针之前还是之后删除? [英] Should we delete before or after erase for an pointer in the vector?
本文介绍了我们应该删除在向量中的指针之前还是之后删除?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我们在 erase
之前或之后删除。我的理解是两个都可以。这是对的吗?
Should we delete before or after erase
. My understanding is both are OK. Is it correct?
此外,是否有任何情况下我们不想删除元素而擦除它?我相信一定有,否则, erase
会很乐意承担责任。
In addition, is there any case we won't want to delete the element while erasing it? I believe there must be , otherwise, the erase
will be happy to take the responsibility.
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???
}
推荐答案
like this;
"itr" must be used like this;
for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); )
{
delete (*itr);
itr = bar.erase(itr);
}
但是,我宁愿首先删除所有元素,然后清除向量;
However, I'd prefer to first delete all elements, and then clear the vector;
for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); ++itr)
delete (*itr);
bar.clear();
这篇关于我们应该删除在向量中的指针之前还是之后删除?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文