[C++] Problème de liste
Résolu
Bonjour,
J'ai un bout de code qui bug :
list<SOMMET*>::iterator p, q;
for(p = LAllSommets.begin(); p != LAllSommets.end(); p++)
{
cout << "liste des voisins de "<< (*p)->nom<<" : ";
for(q = (*p)->LVoisins.begin(); q != (*p)->LVoisins.end(); q++)
{
cout << (*q)->nom << " ";
}
cout << endl;
}
J'explique : LAllSommets est une liste de pointeurs vers des sommets qui ont comme attribut un nom et une liste de pointeurs vers des sommets voisins : LVoisins. (qu isont des sommets)
la première boucle me renvoie bien la liste de tous mes sommets par contre la deuxième s'arête au deuxième sommet. (le premier sommet (a) n'a qu'un voisin alors que b en a deux ! c'est la seule différence)
Pourriez vous m'éclairé vers ou chercher pour résoudre ce bug... Je patauge.
Merci
Akasha
J'ai un bout de code qui bug :
list<SOMMET*>::iterator p, q;
for(p = LAllSommets.begin(); p != LAllSommets.end(); p++)
{
cout << "liste des voisins de "<< (*p)->nom<<" : ";
for(q = (*p)->LVoisins.begin(); q != (*p)->LVoisins.end(); q++)
{
cout << (*q)->nom << " ";
}
cout << endl;
}
J'explique : LAllSommets est une liste de pointeurs vers des sommets qui ont comme attribut un nom et une liste de pointeurs vers des sommets voisins : LVoisins. (qu isont des sommets)
la première boucle me renvoie bien la liste de tous mes sommets par contre la deuxième s'arête au deuxième sommet. (le premier sommet (a) n'a qu'un voisin alors que b en a deux ! c'est la seule différence)
Pourriez vous m'éclairé vers ou chercher pour résoudre ce bug... Je patauge.
Merci
Akasha
A voir également:
- [C++] Problème de liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste de diffusion whatsapp - Guide
- Site dangereux liste - Guide
5 réponses
Visiblement c'est ta structure qui est mal remplie... Ton extrait de code est un peu restreint pour qu'on puisse t'aider.
Bonne chance
Bonne chance
Je ne voulais pas trop mettre de code pour pas trop embrouillé :p
Le passage ou je rempli ma liste de voisin est :
//le sommet voisin de s dans le polygone courant
SOMMET sVoisin = *LSommets.back();
s.LVoisins.push_front(&sVoisin);
Avec LSommets la liste des pointeurs vers des sommets qui composent le polygone courant.
En tout cas merci pour la réponse ^^
Le passage ou je rempli ma liste de voisin est :
//le sommet voisin de s dans le polygone courant
SOMMET sVoisin = *LSommets.back();
s.LVoisins.push_front(&sVoisin);
Avec LSommets la liste des pointeurs vers des sommets qui composent le polygone courant.
En tout cas merci pour la réponse ^^
Ha oui effectivement je connais bien cheucheu :-) On aura sans doute l'occasion de jouer prochainement ensemble j'imagine.
Pour revenir à ton problème, je pense que le soucis est algorithmique. La fonction d'affichage me parait correcte. Je pense que tu remplis mal ta structure, tu devrais te mettre des messages de debug au moment ou tu remplis tes listes.
En ce qui me concerne je peux difficilement t'aider si tu ne me fournis pas un code minimal qui compile...
Bon sinon, tes notations en terme de code sont pas merveilleuses entre les types tantôt en majuscules tantôt pas. Mais bon c'est du détail.
De même dans ta fonction d'affichage (qui ne modifie pas les listes) tu es sensé utiliser des const_iterator (ou const_reverse_iterator) au lieu des iterator (/ reverse_iterator).
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library#les iterators
Bonne chance
Pour revenir à ton problème, je pense que le soucis est algorithmique. La fonction d'affichage me parait correcte. Je pense que tu remplis mal ta structure, tu devrais te mettre des messages de debug au moment ou tu remplis tes listes.
En ce qui me concerne je peux difficilement t'aider si tu ne me fournis pas un code minimal qui compile...
Bon sinon, tes notations en terme de code sont pas merveilleuses entre les types tantôt en majuscules tantôt pas. Mais bon c'est du détail.
De même dans ta fonction d'affichage (qui ne modifie pas les listes) tu es sensé utiliser des const_iterator (ou const_reverse_iterator) au lieu des iterator (/ reverse_iterator).
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library#les iterators
Bonne chance
Tu avais raison, le problème venait de mon remplissage de liste.
Il fallait que je mette : s.LVoisins.push_back(LSommets.back());
Merci pour le coup de main.
Il fallait que je mette : s.LVoisins.push_back(LSommets.back());
Merci pour le coup de main.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question