OK, I'd like to clear something once and for all. If I have a normal vector, like:
std::vector<Object*> coll;
and I want to go through its elements, I know three ways to go about it:
1. Using int index, such as: for(int i = 0; i < coll.size(); ++i)
2. Using type_t index, same as 1.: for(size_t i = 0; i < coll.size(); ++i)
and access elements in both 1 and 2 by: coll[i]
or
3. Using const_iterator, as in:
std::vector<Object*>::const_iterator i;
for(i = coll.begin(); i != coll.end(); ++i)
// stuff
and access elements with *it.
I've noticed (and heard) that the third way is the most fail-proof one, but it's quite unpleasant when it comes to deallocating the vector, because when I use const_iterator, if I do something like delete (*it), or even coll.erase(it) before deallocating, my iterator loses its value, and then I can't continue with the for loop.
What's the suggested/good way to do this?