Преимущества идиомы remove-erase перед прямым удалением элементов из контейнера:
- Более выразительный и эффективный код. 3 Сначала с помощью алгоритмов remove() или remove_if() перемещают все элементы, которые не соответствуют критериям удаления, в начало диапазона, сохраняя относительный порядок элементов. 34 Затем один вызов функции erase() удаляет все оставшиеся элементы в конце диапазона. 3
- Сохранение размера контейнера. 4 Фактически элементы не удаляются, а контейнер сохраняет тот же размер. 4 При этом хвост массива имеет длину, равную количеству «удалённых» элементов, которые остаются в памяти, но в неопределённом состоянии. 4
Таким образом, использование идиомы remove-erase позволяет за один проход через диапазон данных переместить все элементы, не соответствующие критериям удаления, в начало диапазона, а затем за один вызов удалить все оставшиеся элементы в конце диапазона. 4