Я должен реализовать функцию, которая стирает диапазон значений из контейнеров. Итак
eraseRange(v, 1.5, 24);
Например,
удалит любое значение больше 1,5 и меньше 24 из контейнера v. И моя функция отлично работает для списков, где я использую:
container.erase(remove_if(container.begin(), container.end(), rg));
Где rg проверяет, находится ли он в пределах диапазона (реализация этой части не является проблемой, поэтому я не буду останавливаться на этом).
Однако при вызове eraseRange для вектора и использовании аналогичного метода для удаления значений стирается только самое первое значение. Так что, если бы у меня был вектор с номерами от 1 до 10, и я бы позвонил:
eraseRange(v, 3, 7);
Только 3 удаляется.
Теперь это обычно не проблема, я бы просто использовал итератор для проверки значений. За исключением этого конкретного упражнения, петли для / while / do явно запрещены ...
Таким образом, проблема, похоже, связана с контейнерами, которые имеют итераторы произвольного доступа. И я не уверен, что реализовать в качестве альтернативы. Помощь