Удаление элемента из вектора во время итерации?

У меня есть вектор, содержащий элементы, которые являются активными или неактивными. Я хочу, чтобы размер этого вектора оставался небольшим из-за проблем с производительностью, поэтому я хочу, чтобы элементы, отмеченные как неактивные, были удалены из вектора. Я пытался сделать это во время итерации, но получаю сообщение об ошибке «Векторные итераторы несовместимы».

vector<Orb>::iterator i = orbsList.begin();

    while(i != orbsList.end()) {
        bool isActive = (*i).active;

        if(!isActive) {
            orbsList.erase(i++);
        }
        else {
            // do something with *i
            ++i;
        }
    }
51
задан Lucas 17 January 2011 в 02:27
поделиться