У меня есть сомнения, что я хотел бы уточнить в моей голове. Я знаю о различном поведении std::vector между erase и std::remove, где первый физически удаляет элемент из вектора, уменьшая размер, а другой просто перемещает элемент, оставляя емкость одинаковым.
Это просто по соображениям эффективности? Используя erase, все элементы в std::vector будут сдвинуты на 1, вызывая большое количество копий; std::remove выполняет только "логическое" удаление и оставляет вектор неизменным, перемещая вещи вокруг. Если объекты тяжелые, эта разница может иметь значение, верно?