好的,我想一劳永逸地清除一些东西。如果我有一个法线向量,例如:
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循环。
这样做的建议/好方法是什么?