Set - Remplissage, parcours

messier79 Messages postés 10 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 23 avril 2004 - 7 avril 2004 à 19:22
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 - 7 avril 2004 à 20:56
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

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
7 avril 2004 à 20:56
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.
0
Rejoignez-nous