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

Следующий код C ++ заполняет вектор несколькими объектами, а затем удаляет некоторые из этих объектов, но, похоже, удаляет неправильные:

vector<Photon>  photons;

photons = source->emitPhotons();    // fills vector with 300 Photon objects

for (int i=0; i<photons.size();  i++) {
    bool useless = false;

    // process photon, set useless to true for some

    // remove useless photons
    if (useless) {
        photons.erase(photons.begin()+i);
    }
}

Я делаю это правильно? Я думаю линияphotons.erase(photons.begin()+i); может быть проблема?

Ответы на вопрос(5)

Ваш ответ на вопрос