6

BOOST_FOREACH が繰り返し実行されているコンテナーが BOOST_FOREACH スコープ内で変更された場合はどうなりますか?

BOOST_FOREACH は初期状態を「フリーズ」しますか?

4

2 に答える 2

9

この場合、動作は未定義です。の公式ドキュメントのホイストとイテレータの無効化を見てくださいBOOST_FOREACH

于 2011-04-21T11:51:59.560 に答える
2

容器にもよると思います。

本当の問題は、トラバーサルの (残りの) イテレータ範囲が無効化されているかどうかです。

これは変更によって異なります。stdアルゴリズムはその動作で指定されます。どのイテレータがいつ無効化されるかについて言及しています。

アップデート

また、イテレータのタイプに依存する場合もあります。

  • vector::erase後続のすべての反復子を無効にします
  • list::eraseではない
于 2011-04-21T11:52:17.303 に答える