std::vector::erase
消去する要素の位置を示す単一の反復子、または範囲を示す 2 つの反復子のいずれかを受け入れます。しかし、これを行うことはできません:
std::vector<int> vec = { 1, 2, 3 };
vec.erase(1);
むしろ、次のようなことをする必要があります
vec.erase( vec.begin()+1 );
これは不必要な余分な作業のように思えます。クラス設計の POV から、このオーバーロードが含まれない理由があるのでしょうか?
編集:最も包括的な回答を選択しました。すべてが良かったです。また、私がこれを書いているとき、この投稿には「建設的ではない」という点で 4 票の票があります。ただし、回答の質を考えると、これは明らかに有用な質問だったと思います。確かに私にとっては.