[STL] parcours de liste.

herlockg Messages postés 2 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 novembre 2007 - 9 avril 2007 à 00:12
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 9 avril 2007 à 22:14
Bonjour,

Je voudrais pouvoir parcourir une liste d'objet de type personne et récupérer un des objets de ma liste pour la mettre dans un objet (de même type) à part. Bref, le sauvegarder quoi.

Cependant je n'arrive pas à trouver le moyen de faire ça. Avec l'ittérateur ça ne marche pas (pourtant l'ittérateur se comporte plus ou moins comme un objet j'ai l'impression).

Avez-vous une idée de comment faire ?

merci d'avance.

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 avril 2007 à 11:28
C'est très simple:

list::iterator i = personnes.begin();

Personne herlockg;
bool found = false;
while(i != personnes.end() && !found)

{

  if(i->GetName() == "herlockg")

  {

    found = true;

    herlockg = *i; // Comme pour un pointeur, * te donne accès au contenu de l'itérateur

  }

  i++;

}

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 avril 2007 à 13:13
#include
#include <list>

std::list::iterator it = std::find(ta_list.begin(), ta_list.end(), personne_recherchee);

if (it == ta_list.end())
{
    Personne personne_trouvee = *it;
}
else
 // cette personne n'existe pas.

Donc tu auras noté que pour cette solution, il est nécessaire que l'opérateur:
bool operator == (const Personne & _p1, const Personne & _p2);

soit défini.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 avril 2007 à 16:46
En l'occurence, le but est de trouver un personne. Si on a déja personne_recherchee, ca ne sert à rien de faire la recherche. C'est comme si tu faisais personne_trouvee = personne_recherchee;

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 avril 2007 à 22:14
Oui mais ton opérateur ==, tu le définies comme tu veux. En l'occurence, deux personnes peuvent etre égales, si elles ont le meme nom.
0
Rejoignez-nous