頭の中で明確にしたい疑問があります。std::vector最初の要素がベクトルから物理的eraseにstd::remove削除されてサイズが縮小され、もう 1 つの要素が要素を移動するだけで、容量は同じままになります。
これは単に効率上の理由によるものですか?を使用するとerase、a のすべての要素がstd::vector1 だけシフトされ、大量のコピーが発生します。std::remove単に「論理的な」削除を行い、物事を移動することによってベクトルを変更せずに残します。オブジェクトが重い場合、その違いが問題になる可能性がありますよね?