Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

7
  • Correct me if I'm wrong, but there's no difference between: it = T2pS.erase(it++); to the way it's written in the for loop in the question, because in both cases "it" will be invalid by the time you ++. Commented Jan 12, 2009 at 7:39
  • Ok, I'll correct you 'cause you're wrong ;-) in erase(it++) the argument is evaluated before the erase is called, it will be (correctly) incremented, it's previous (unincremented) value is returned to erase and that one becomes invalid, but it itself already points to the next element. Commented Jan 12, 2009 at 8:56
  • 1
    Deleting a null pointer is a noop. There is no need to check for null. Commented Jan 12, 2009 at 20:20
  • you might mention that std::list doesn't invalidate any iterator other than the iterator(s) pointing to the erased element(s), when calling the member erase() function. Commented Jan 12, 2009 at 20:23
  • wilhelmtell, i thought it would put only more confusion in the game if i mention more containers. your point about deleting a nullpointer is good, imho. ill add it Commented Jan 12, 2009 at 20:41