4. La remarque précédente s’applique à l’opérateur <<.
5. Notez qu’ici il n’est pas possible d’agrandir l’ensemble au-delà de la limite qui lui a
été impartie lors de sa construction. Il serait assez facile de remédier à cette lacune
en modifiant sensiblement la fonction d’ajout d’un élément (operator << ). Il suffirait,
en effet, qu’elle prévoie, lorsque la limite est atteinte, d’allouer un nouvel
emplacement dynamique, par exemple d’une taille double de l’emplacement
existant, d’y recopier l’actuel contenu et de libérer l’ancien emplacement (en
actualisant convenablement les membres donnée de l’objet).
Voici un exemple de programme utilisant la classe set_int, accompagné du résultat
fourni par son exécution :
/************* test de la classe set_int *********/
#include "setint.h"
#include
using namespace std ;
main()
{ void fct (set_int) ;
void fctref (set_int &) ;
set_int ens ;
cout << "donnez 10 entiers \n" ;
int i, n ;
for (i=0 ; i<10 ; i++)
{ cin >> n ;
ens << n ;
}
cout << "il y a : " << ens.cardinal () << " entiers différents\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
fct (ens) ;
cout << "au retour de fct, il y en a " << ens.cardinal () << "\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
fctref (ens) ;
cout << "au retour de fctref, il y en a " << ens.cardinal () << "\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
cout << "appartenance de -1 : " << -1 % ens << "\n" ;
cout << "appartenance de 500 : " << 500 % ens << "\n" ;
set_int ensa, ensb ;
ensa = ensb = ens ;
cout << "ensemble a : " << ensa << "\n" ;
cout << "ensemble b : " << ensb << "\n" ;
}
void fct (set_int e)
{ cout << "ensemble reçu par fct : " << e << "\n" ;
e << -1 << -2 << -3 ;
}
void fctref (set_int & e)
{ cout << "ensemble reçu par fctref : " << e << "\n" ;
e << -1 << -2 << -3 ;
}
donnez 10 entiers
3 5 3 1 8 5 1 7 7 3
il y a : 5 entiers différents
qui forment l'ensemble : [ 3 5 1 8 7 ]
ensemble reçu par fct : [ 3 5 1 8 7 ]
350
Précédent

- 351/398

Suivant