32項 本当に削除したい場合は、remove風アルゴリズムのあとにeraseを使おう
本当に削除したい場合は、remove風アルゴリズムのあとにeraseを使おう
removeは除去したい要素を、後ろの除去したくない要素で上書きします。
例えば、次の画像のvectorに
次のコードを実行すると
vector<int>::iterator newEnd(remove(v.begin(), v.end(), 99));
次の画像のようになります。
無駄な要素を削除するには、removeとeraseを組み合わせます。
v.erase(remove(v.begin(), v.end(), 99), v.end());
remove_ifやuniqueを使う時も、完全に削除するにはeraseと組み合わせて使います。
listはeraseを使う必要がありません。
list::removeやlist::remove_if、list::uniqueは実際に要素を削除します。