Отличие между std::remove и std::remove_if в C++ заключается в том, что они выполняют разные операции:
При этом обе функции не удаляют элементы из контейнера, они только перемещают или копируют элементы внутри контейнера, но никогда не изменят его размер. 1
Также std::remove_if позволяет передать функцию компаратора вместо значения для проверки. 4 Если компаратор возвращает true для элемента, тот удаляется из входного диапазона. 2