4

次のループでは、事前に計算された終了イテレータを使用しています。

std::list::iterator end = MyList.end();

for (std::list::iterator it = MyList.begin(); it != end ;) 
    it = MyList.erase(it);

std::list 内の要素を消去するとき、MyList.end() はその値を変更できend != MyList.end()ますか?

4

1 に答える 1

5

いいえ。

n3376 23.3.5.4

iterator erase(const_iterator position);
iterator erase(const_iterator first, const_iterator last);

効果: イテレータと消去された要素への参照のみを無効にします。

于 2013-06-27T05:44:45.607 に答える