IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probleme pour supprimer un élément d'un tableau


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La façon correcte de faire est décrite dans la FAQ.

    Mais pourquoi pas un simple clear() pour vider ton tableau ? Ou pourquoi pas un std::set pour éviter les doublons ?

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Hum je vais me repencher sur ca, j'avais oublié cette facons de faire...

    Sinon, en effet, je doit pouvoir faire un Clear() en re-bouclant aprés mes traitement pur être sur de ne pas en zapper en route ...

    Par contre je ne vois l'utilité du set ici ( mais la aussi ca fait trés longtemps je n'ai aps programmé alors je vais revoir les set rapidement pour voir si je ne me trompe pas )
    ( ouch je confond map et set ...)

    Bref ..merci et à demain une fois que j'aurais potassé mon sujet .


    EDIT : heu set = conteneur trié selon une clé c'est bien ca ? Bon avec 2 set imbréiqués je pourrais tout trier en X et en Y, m mais est-ce que c'est judicieux sachant qu'il faut également ( pour des test de collison ) que je puisse savoir rapidement quels objets se trouve en (X,Y) par exemple ?

    EDIT2 : J'ai opté pour ma méthode du "clear" .

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/11/2006, 10h45
  2. [Tableaux] supprimer un élément d'un tableau
    Par banzzai dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2006, 15h52
  3. [TASM] Problème pour supprimer un fichier
    Par infoelectronique dans le forum Assembleur
    Réponses: 2
    Dernier message: 16/06/2006, 00h47
  4. Réponses: 21
    Dernier message: 28/02/2006, 15h23
  5. Supprimer un élément d'un tableau
    Par CaptainChoc dans le forum Langage
    Réponses: 15
    Dernier message: 23/12/2002, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo