J'ai un vecteur qui contient des éléments actifs ou inactifs. Je veux que la taille de ce vecteur reste petite pour les problèmes de performances, donc je veux que les éléments qui ont été marqués inactifs soient effacés du vecteur. J'ai essayé de le faire pendant l'itération, mais j'obtiens l'erreur "itérateurs vectoriels incompatibles".
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;
}
}