Комментарий Бегемота должен быть принятым ответом. В соответствии со стандартным стиранием делает недействительными «все итераторы и ссылки на элементы после позиции» ( моя ошибка; это было для вектора и, возможно, других контейнеров; поэтому, по крайней мере, чтобы избежать неожиданностей, вы должны преуспеть в использовании версия алгоритма вместо ).
Так что вам будет безопаснее использовать rbegin () и rend (). Но почему бы не использовать std :: alogirthms!
struct Predicate
{
int _y;
explicit Predicate(int y) : _y(y) {}
bool operator()(const CG1_Edge edge) const
{
return currentEdge->y_up < _y;
}
};
std::erase(
std::remove_if(this->ActiveEdges.begin(), this->ActiveEdges.end(), Predicate(y)),
this->ActiveEdges.end());