Разница между std::remove и std::erase в алгоритмах работы с контейнерами заключается в их назначении:
Таким образом, std::remove подготавливает контейнер к удалению элементов, а std::erase выполняет само удаление. 35
Обычно эти функции используются в комбинации, образуя идиому erase-remove, которая предполагает применение алгоритма remove или remove_if, за которым следует вызов функции erase контейнера. 5