Почему я не могу удалить последний элемент вектора

У меня есть вектор stl, состоящий из нескольких элементов. Мне нужно перебрать этот вектор и удалить элементы, которые соответствуют некоторым критериям. Итак, я написал этот код

for (int j = imageDataVector.size()-1; j >= 0; j--) {
    if(imageDataVector[i] < threshold)
        imageDataVector.erase(imageDataVector.end() - j);
}

Этот код отлично работает почти во всех случаях, однако, если все элементы вектора соответствуют критериям, я получаю сообщение об ошибке:

vector erase iterator outside the range

Эта ошибка возникает, если у меня остался только один элемент в векторе. Я делаю не так?

5
задан Alex Reynolds 30 January 2012 в 00:58
поделиться