如果 BOOST_FOREACH 正在迭代的容器在 BOOST_FOREACH 范围内发生更改,会发生什么情况?
BOOST_FOREACH 是否“冻结”初始状态?
如果 BOOST_FOREACH 正在迭代的容器在 BOOST_FOREACH 范围内发生更改,会发生什么情况?
BOOST_FOREACH 是否“冻结”初始状态?
在这种情况下,行为是未定义的。查看. _ _BOOST_FOREACH
我想这取决于容器。
真正的问题是,遍历的(剩余)迭代器范围是否无效。
这取决于变化。std
算法是用它们的行为来指定的:它们提到了迭代器什么时候失效。
它还可以取决于迭代器的类型,
vector::erase
使所有后续迭代器无效list::erase
才不是