Перевод этой страницы?:

remove

Синтаксис:

    #include <algorithm>
    forward_iterator remove( forward_iterator start, forward_iterator end, const T& val );

Алгоритм remove удаляет все элементы диапазона [start,end), равные val.

Возвращаемое значение функции - итератор на область за последним элементом новой последовательности, не содержащей элементов, равных val.

Обратите внимание, что общепринятые реализации алгоритма remove на самом деле не удаляют элементы из диапазона [start, end). Если функция вызывается для контейнера, его длина останется той же после выполнения функции (remove просто не может удалять элементы через итераторы), и все элементы все равно останутся в контейнере. Вместо удаления remove располагает «удаленные» элементы в конец контейнера, и возвращает итератор, который разделяет не удаленные и удаленные элементы. Чтобы действительно удалить элементы из контейнера, вам нужно вызвать метод контейнера erase, который удаляет элементы, начиная с возвращенного итератора. Обычно эти понятия объединены, и называются идиома удаления-стирания (erase-remove idiom):

container.erase(remove(container.begin(), container.end(), val), container.end());

Функция remove работает за линейное время.

Смотрите также: remove_copy, remove_copy_if, remove_if, unique, unique_copy