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

Langage C++ Discussion :

Suppression d'un element dans une liste


Sujet :

Langage C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 108
    Par défaut Suppression d'un element dans une liste
    Bonjour,

    J'ai un problême avec les std::list du c++ lors de la suppression d'un élément de la liste.

    Mon but est de pouvoir insérer/supprimer/rechercher rapidement **toutes** les entrées avec des coordonnées (i,j) spécifiques

    J'arrive bien à retrouver ces entrées sans pb avec une boucle qui itère du premier au dernier élément de la liste, mais lorsque je supprime cette entrée, le programme plante juste après

    => je me retrouve donc pour l'instant bloqué à devoir mettre un break immédiatement après la première suppression afin que ce petit programme de test ne plante pas ... alors que je voudrais qu'il continue l'itération afin de supprimer les autres occurences qui correspondent à ce type d'entrée

    Le morceau de code qui crée pb est celui-ci :

    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
    16
    17
    18
    19
    20
    21
    22
     
    void Destroy(int i, int j)
    {
    	std::list<entry_t>::iterator iter;
    	int step = 0;
     
    	printf("Destroy entries (%d,%d,xxxx)\n", i, j);
       	for( iter = LIS.begin() ; iter != LIS.end() ; ++iter, ++step)
       	{
    		printf("  Test entry %d (%d,%d,%d) with (%d,%d,xxxx): ",  step, iter->i, iter->j, iter->coef, i, j );	
    		if( (iter->i == i) && (iter->j == j) )
    		{
    			LIS.erase(iter);
    			printf("erased \n");
    			break; 
    		}
    		else
    		{
    			printf("no erased \n");
    		}
       	}
    }
    => si je supprime le break après le LIS.erase(iter), ça plante

    Qu'est-ce qui ne va pas dans ce boût de code ?

    J'ai mis en pièce jointe un exemple de code qui crée le pb

    Sous Linux, ça se compile via g++ test.cpp -o test -std=c++11
    (j'y ai mis le -std=c++11 car sinon g++ me sort tout un tas de warnings)


    @+
    Yannoo
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] Supprimer un élément dans une liste
    Par myjuna dans le forum Langage
    Réponses: 15
    Dernier message: 06/08/2014, 11h49
  2. Recherche sur 2 elements dans une liste box.
    Par molarisapa dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 18h43
  3. occurences d'un element dans une liste (algorithme)
    Par kespy13 dans le forum Algorithmes et structures de données
    Réponses: 25
    Dernier message: 16/02/2006, 00h18
  4. Recherche Element dans une liste
    Par hellodelu dans le forum ASP
    Réponses: 7
    Dernier message: 19/08/2005, 10h56

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