Probleme pour supprimer un élément d'un tableau
Bonjour à tous, ca fait un bail que je n'ai pas programmé et je my remet doucement, je vous explique mon problème :
j'ai un tableau a 3 dimensions représentant une carte ( coordx, coordy) chaque case de ce tableau contenant une liste ( pour simplifier un autre vector ) d'objet appartenant a cette case .
Le probleme est que ces objets bouge a chaque frame et il faut donc remetre a jour leur poisition dans le tableau .
Dans chaque case je stocke une liste de pointeur ( cEvent * ) .
Pour la MAJ des position, j'avais pensé : face a un tableau "vierge" , créer en premier lieu un tableau a une dimension contenanat en vrac tout mes objet et parcourir ce tableau pour replacer mes pointeur dans mon tableau selon les bonne coordonées [ je ne pense pas qu'il ai beaucoup plus rapide ... ]
Le probleme est que maintenant, a chaue frame, aprés avoir traité un objet, il me faut le supprimer tu tableau [ afin qu'il n'y ai pas de doublon d'un meme objet ]
Et la je bloque ... je pensait faire comme ca : je parcour mon tableau, je traite les objet rencontré, et je les supprime ( et en chaque début de frame, je RE-remplie mon tableau )
Et ce morceau de code plante [ a lexécution, sans message d'erreur particulièrement pertinent ]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
for (int i = 0 ; i < Hauteur/2 ; i++ )
{
for (int j = 0; j < Largeur/2; j ++)
{
std::vector < cEvent*>::iterator it ;
for ( it = EntitiesPos[j][i].begin(); it != EntitiesPos[j][i].end() ; it++ )
{
(*it)->Update();
(*it)->Draw() ;
EntitiesPos[j][i].erase(it);
}
}
}
|
La partie qui fait planter est le ....erase(it)
Merci si vous voyez la source de mon problème .