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