0

STL コンテナーの消去 (2 つのイテレーターを使用するオーバーライド) などの反復メソッドを呼び出すことは安全std::vector::erase()ですvec.end()か? 私は実験を行いましたが、呼び出しは何もしないように見えますが、コードで安全に使用できることを確認したいerase()です。

4

2 に答える 2

7

C ++標準(n3337)、23.2.3、シーケンスコンテナ、表100('シーケンスコンテナの要件)-行a.erase(q1,q2)

効果:範囲内の要素を消去します[q1,q2)

これは、a.erase(q,q)何もしないので安全であることを意味します。

このSOの質問に対するLokiAstariの回答には、C++標準のドラフトのリストがあります。残念ながら公式コピーは無料で入手できないため、C++11に最も近いと思われるn3337を使用しています。

于 2013-02-12T02:14:11.970 に答える
2

安全 ; end()-> end()は空の範囲であるため、これは効果的なノーオペレーションです。

于 2013-02-12T02:15:55.447 に答える