Exercice 149 (68 revisité)
Ancien énoncé
Modifier la classe set_char précédente, de manière à disposer de ce que l’on nomme
un « itérateur » sur les différents éléments de l’ensemble. Il s’agit d’un mécanisme
permettant d’accéder séquentiellement aux différents éléments. On prévoira trois
nouvelles fonctions membre : init, qui initialise le processus d’exploration ; prochain,
qui fournit l’élément suivant lorsqu’il existe et existe, qui précise s’il existe encore
un élément non exploré.
On complétera alors le programme d’utilisation précédent, de manière qu’il affiche
les différents caractères contenus dans le mot fourni en donnée.
Commentaires
Ici encore, on peut utiliser le composant standard set qui dispose d’un itérateur
intégré set::iterator. Bien entendu, il n’y a plus de raison d’imposer l’existence
des fonctions init, prochain et existe. Les fonctions membre begin et end fournissent les
valeurs initiales et finales à utiliser pour explorer l’ensemble à l’aide d’un tel itérateur.
On prendra garde au fait que end pointe non pas sur le dernier élément du conteneur,
mais juste après. L’avancement de l’itérateur s’obtient par l’opérateur ++.
Voici ce que pourrait devenir le programme de test fourni précédemment. La notation
*ie correspond à l’élément désigné par la valeur courante de l’itérateur ie.
#include
#include
#include
using namespace std ;
main()
{ set ens ; // voir remarque 1 ci-après
char mot [81] ;
cout << "donnez un mot : " ;
cin >> mot ;
int i ;
for (i=0 ; i
cout << "il contient " << ens.size() << " caracteres differents"
<< " qui sont :\n" ;
set::iterator ie ; // iterateur sur un ensemble de caracteres
for (ie=ens.begin() ; ie != ens.end() ; ie++)
cout << *ie << " " ;
}
donnez un mot : bonjour
373
Ancien énoncé
Modifier la classe set_char précédente, de manière à disposer de ce que l’on nomme
un « itérateur » sur les différents éléments de l’ensemble. Il s’agit d’un mécanisme
permettant d’accéder séquentiellement aux différents éléments. On prévoira trois
nouvelles fonctions membre : init, qui initialise le processus d’exploration ; prochain,
qui fournit l’élément suivant lorsqu’il existe et existe, qui précise s’il existe encore
un élément non exploré.
On complétera alors le programme d’utilisation précédent, de manière qu’il affiche
les différents caractères contenus dans le mot fourni en donnée.
Commentaires
Ici encore, on peut utiliser le composant standard set
intégré set
des fonctions init, prochain et existe. Les fonctions membre begin et end fournissent les
valeurs initiales et finales à utiliser pour explorer l’ensemble à l’aide d’un tel itérateur.
On prendra garde au fait que end pointe non pas sur le dernier élément du conteneur,
mais juste après. L’avancement de l’itérateur s’obtient par l’opérateur ++.
Voici ce que pourrait devenir le programme de test fourni précédemment. La notation
*ie correspond à l’élément désigné par la valeur courante de l’itérateur ie.
#include
#include
#include
using namespace std ;
main()
{ set
char mot [81] ;
cout << "donnez un mot : " ;
cin >> mot ;
int i ;
for (i=0 ; i
<< " qui sont :\n" ;
set
for (ie=ens.begin() ; ie != ens.end() ; ie++)
cout << *ie << " " ;
}
donnez un mot : bonjour
373
