Inserting into std::map while iterating over it?
c++, stdmap
Solution
From `std::map::erase()`:
References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
From `std::map::insert()`:
No iterators or references are invalidated.
From `std::map::operator[]`:
No iterators or references are invalidated.
If `Update()` does not remove itself, then the code is legal. If `Update()` does, then it is not. `Update()` would be required to inform the calling code if it removed itself, either setting a flag or returning the next iterator (as suggested by Attila).
Problem
I have a Map over which I iterate like this: ``` std::map<unsigned int, GameObject *>::iterator itr = _gameObjects.begin(); while (itr != _gameObjects.end()) { itr->second->Update(); itr++; } ``` Update() might insert an element into the map or even remove one from it, but it doesn't necessarily do any of the two. It obviously doesn't work like that. Is there a way it can be done?