好的,我想一劳永逸地清除一些东西。如果我有一个法线向量,例如:
std::vector<Object*> coll;
我想了解它的元素,我知道三种方法:
1.使用int
索引,如:for(int i = 0; i < coll.size(); ++i)
2.使用type_t
索引,同1.:for(size_t i = 0; i < coll.size(); ++i)
并通过以下方式访问 1 和 2 中的元素:coll[i]
或者
3.使用const_iterator
,如:
std::vector<Object*>::const_iterator i;
for(i = coll.begin(); i != coll.end(); ++i)
// stuff
并使用 . 访问元素*it
。
我注意到(并且听说)第三种方式是最防失败的方式,但是在解除分配向量时非常不愉快,因为当我使用 时const_iterator
,如果我执行类似的操作delete (*it)
,甚至coll.erase(it)
在解除分配之前,我的迭代器失去它的价值,然后我不能继续for
循环。
这样做的建议/好方法是什么?