Eliminar elementos de un vector

El siguiente código C ++ llena un vector con varios objetos y luego elimina algunos de estos objetos, pero parece que elimina los incorrectos:

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);
    }
}

¿Estoy haciendo esto correctamente? Estoy pensando en la líneaphotons.erase(photons.begin()+i);@ podría ser el problema?

Respuestas a la pregunta(10)

Su respuesta a la pregunta