Changes to a container while BOOST_FOREACH is iterating through it?
What would happen if a container that BOOST_FOREACH is iterating through is changed inside the BOOST_FOREACH scope?
Does BOOST_FOR开发者_如何学GoEACH "freeze" the initial state?
In this case behavior is undefined. Look at Hoisting and Iterator Invalidation in official documentation of BOOST_FOREACH
.
I guess it depends on the container.
The real question is, whether the (remaining) iterator range for traversal is invalidated or not.
This depends on the change. std
algorithms are specified with their behaviour: they mention what iterators are invalidated when.
Update
It can also depend on the type of iterator,
vector::erase
invalidates all subsequent iteratorslist::erase
does not
精彩评论