Возможный дубликат:
Разница между стиранием и удалением
Предположим, у меня есть контейнер …. что означает следующее.
c.erase(remove(c.begin(),c.end(),99),c.end());
не стирать и не удалять то же самое? Какова конкретная функция стирания и удаления в приведенном выше примере?
Удаляет все элементы, равные 99
из контейнера c
,
std::remove
на самом деле не удаляет какие-либо элементы. Он перемещает все представляющие интерес элементы во вторую часть контейнера и возвращает итератор, указывающий первый из них. Тогда erase
Функция-член принимает диапазон итератора для фактического удаления элементов из контейнера.
Увидеть стереть-удалить идиому.
Других решений пока нет …