Set - Remplissage, parcours

Signaler
Messages postés
10
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
23 avril 2004
-
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
-
Bonjour
Je dispose d'une classe "Cours" avec un attribut "sigle".
Je voudrais ajouter des instances de cette classe dans un set trié par Sigle.

set<Cours *, less<Cours *> > lstCours;
set<Cours *, less<Cours *> >::iterator iterCours;
Cours *cours=new Cours();

Les instances sont créées depuis un fichier. J'ajoute une instance comme celà :

while (fCours)
{
getline(fCours, line);

sigle=line.substr(7, 7);
cours->setSigleCours(sigle);

//J'ai la bonne chose dans "cours"

lstCours.insert(cours);
}

Et je parcours ainsi :

iterCours=lstCours.begin();
while(iterCours!=lstCours.end())
{
cout << (*iterCours)->getSigleCours() << "\n";
++iterCours;
}

Mais rien ne sort à l'affichage. Si je fais le même parcours tout de suite après une insertion, 1 élément est affiché.

D'autre part, le tri ne marche pas (je pense que c'est normal...). Que dois-je faire pour que ce soit le cas ?

Merci

1 réponse

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Tu insers toujours le même pointeur dans ton std::set...
il faudrait au moins créer une nouvelle instance à chaque fois.

Pourquoi utilises-tu des pointeurs ?

un

std::set< Cours > sCours;

devrait suffir, avec un operator < définit sur tes cours.