Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2738 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  suppression d'une structure dans une liste visual c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

suppression d'une structure dans une liste visual c++

n°1764164
tassiruam
Posté le 24-07-2008 à 12:02:53  profilanswer
 

Bonjour
 
Voila j'ai un problème.
 
Je me suis crée une structure:
 

Code :
  1. struct toto
  2. {
  3. titi   data; //autre structure
  4. bool active;
  5. int Index;
  6. float color[3];
  7. };


 
jusque la pas de problème, ensuite après le remplissage de la structure je la met dans une liste de type :
 

Code :
  1. std::list<toto*> mylist_toto; // à noter que j'utilise des pointeurs


 
jusque la toujours pas de problème, je remplis correctement ma liste
 
Mon problème est le suivant : Je voudrai parcourir ma liste et supprimer un élément de ma liste en fonction de son index.
par exemple :je parcours ma liste et dès que je vois qu'un structure a un index égal à 5 et bien je la vire.
 
Alors je crée un iterator pour le parcours de ma liste :
 

Code :
  1. list<toto*>::iterator it1;


 
je parcours ma liste :  
 
 

Code :
  1. for(it1 = mylist_toto.begin(); it1 != mylist_toto.end(); it1 ++)
  2. {
  3.                //la je veux supprimer mon élément de ma liste en fonction de son index
  4.  if ()// que dois je mettre dedans?
  5.  {
  6.   *diagram = mylist_Diagram.erase(*diagram);// est ce que cela fonctionne
  7.  }
  8. }


 
Donc voila mon problème je ne trouve pas la condition et l'ecrasement;
 
Merci et bonne journée
 
tassiruam


Message édité par tassiruam le 24-07-2008 à 13:47:42
mood
Publicité
Posté le 24-07-2008 à 12:02:53  profilanswer
 

n°1764262
kyntriad
Posté le 24-07-2008 à 14:23:01  profilanswer
 

Code :
  1. if (5 == it1->index)
  2. mylist_toto.erase(it1);
 

nan ?


Message édité par kyntriad le 24-07-2008 à 14:23:10

---------------
You can't start a fire with moonlight
n°1765983
Malkav
Posté le 28-07-2008 à 17:01:15  profilanswer
 

je dirais çà :
 

Code :
  1. for(it1 = mylist_toto.begin(); it1 != mylist_toto.end(); )
  2. {
  3. //la je veux supprimer mon élément de ma liste en fonction de son index
  4. if ((*it1).Index == 5 )
  5. {
  6.  // *diagram = mylist_Diagram.erase(*diagram);// -> c'est quoi diagram ??
  7.  list<toto*>::iterator itDel = it1;
  8.  ++it1;
  9.  mylist_Diagram.erase(itDel);
  10. }
  11. else
  12. {
  13.  ++it1;
  14. }
  15. }


 
erase() invalide l'itérateur courant, donc il faut faire le ++ avant de l'appeller, et ne pas le faire dans la boucle for() puisqu'alors on le ferait deux fois dans ce cas là, d'où le 'else'
 
bon normalement tu peux aussi écrire

Code :
  1. it1 = mylist_Diagram.erase(it1);


mais c'est moins facilement lisible


Message édité par Malkav le 28-07-2008 à 17:05:00
n°1766060
Taz
bisounours-codeur
Posté le 28-07-2008 à 18:39:56  profilanswer
 

attention l'API list et set et etc n'est pas la même.
Il faut bien lire la doc. Tantôt c'est it = l.erase(it) tantôt ça sera l.erase(it++)
 
sinon y a des tas d'algo bien dans STL, genre remove_if


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  suppression d'une structure dans une liste visual c++

 

Sujets relatifs
Visual studio 2008 et fichiers manifestcheckbox dans select(Liste déroulante)
batch de recherche / suppressionRecherche/suppression fichier batch
[VB6] Question, "Le grand livre visual basic 6"affichage liste sélectionnée à partir d'un select
ergonomie d'un calculateur : rappeler la selection d'une liste déroul.structure if avec une variable globlale - JAVA
Extraire lignes d'un fichier .csv avec Visual C++VBS : tester une liste
Plus de sujets relatifs à : suppression d'une structure dans une liste visual c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR