Exercice 152 (79 revisité)
Ancien énoncé
Modifier la classe set_int précédente (implémentée sous la forme d’une liste chaînée,
avec ou sans son constructeur par recopie) pour qu’elle dispose de ce que l’on
nomme un « itérateur » sur les différents éléments de l’ensemble. Rappelons qu’il
s’agit d’un mécanisme permettant d’accéder séquentiellement aux différents éléments
de l’ensemble. On prévoira trois nouvelles fonctions membre : init, pour initialiser
le processus d’itération ; prochain, pour fournir l’élément suivant lorsqu’il existe et
existe, pour tester s’il existe encore un élément non exploré.
On complétera alors le programme d’utilisation précédent (en fait, celui de
l’exercice 26), de manière qu’il affiche les différents entiers contenus dans les
valeurs fournies en donnée.
Commentaires
Ici encore, il n’y a aucune raison de vouloir modifier l’implémentation d’un composant
standard. Voici ce que pourrait devenir l’exemple de programme d’utilisation si l’on
utilisait le composant set et l’itérateur associé set::iterator :
#include
#include // pour la classe set
using namespace std ;
main()
{ set ens ;
cout << "donnez 20 entiers \n" ;
int i, n ;
for (i=0 ; i<20 ; i++)
{ cin >> n ;
ens.insert (n) ;
}
cout << "il y a : " << ens.size() << " entiers differents\n" ;
cout << "Ce sont : \n" ;
set::iterator is ;
for (is=ens.begin() ; is != ens.end() ; is++)
cout << *is << " " ;
}
378
Précédent

- 379/398

Suivant