is this common practise for using an interator with erase? what i wish to do is interate through each item and delete the item if some condition is true.  when i delete, i need to move back a step so that i dont miss an item.

for (std::vector<int>::iterator it = vect.begin(); it != vect.end(); it++) {
 if ((*it) == 5) { // some condition
  vect.erase(it);
  it--; //  step back
 }
}

or would it be best to use a reverse iterater? (or possible?)

for (std::vector<int>::reverse_iterator it2 = vect.rbegin(); it2 != vect.rend(); it2++) {
 if ((*it) == 5) {
  // i'm not actually sure how to erase with a reverse iterator???
  vect.erase(it2);
 }
}