开发者

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 iterators
  • list::erase does not
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜