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