set ens ;
cout << "donnez 10 entiers \n" ;
int i, n ;
for (i=0 ; i<10 ; i++)
{ cin >> n ;
ens.insert(n) ;
}
cout << "il y a : " << ens.size() << " entiers differents\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
fct (ens) ;
cout << "au retour de fct, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
fctref (ens) ;
cout << "au retour de fctref, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
cout << "appartenance de -1 : " << ens.count(-1) << "\n" ;
cout << "appartenance de 500 : " << ens.count(500) << "\n" ;
set ensa, ensb ;
ensa = ensb = ens ;
cout << "ensemble a : " ; affiche(ensa) ;
cout << "ensemble b : " ; affiche(ensb) ;
}
void fct (set e)
{ cout << "ensemble reçu par fct : " ; affiche(e) ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
void fctref (set & e)
{ cout << "ensemble recu par fctref : " ; affiche(e) ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
void affiche (set e)
{ set::iterator ie ;
cout << "[ " ;
for (ie=e.begin() ; ie!=e.end() ; ie++)
cout << *ie << " ";
cout <<"] \n" ;
}
donnez 10 entiers
3 5 3 1 8 5 1 7 7 3
il y a : 5 entiers differents
qui forment l'ensemble : [ 1 3 5 7 8 ]
ensemble recu par fct : [ 1 3 5 7 8 ]
au retour de fct, il y en a 5
qui forment l'ensemble : [ 1 3 5 7 8 ]
ensemble recu par fctref : [ 1 3 5 7 8 ]
au retour de fctref, il y en a 8
qui forment l'ensemble : [ -3 -2 -1 1 3 5 7 8 ]
appartenance de -1 : 1
appartenance de 500 : 0
ensemble a : [ -3 -2 -1 1 3 5 7 8 ]
ensemble b : [ -3 -2 -1 1 3 5 7 8 ]
On peut également créer artificiellement une classe set_int, dérivée de set, dans
laquelle on surdéfinit l’opérateur <<, comme dans cet exemple qui fournit les mêmes
résultats que le précédent :
#include
#include
using namespace std ;
388
cout << "donnez 10 entiers \n" ;
int i, n ;
for (i=0 ; i<10 ; i++)
{ cin >> n ;
ens.insert(n) ;
}
cout << "il y a : " << ens.size() << " entiers differents\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
fct (ens) ;
cout << "au retour de fct, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
fctref (ens) ;
cout << "au retour de fctref, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " ; affiche(ens) ;
cout << "appartenance de -1 : " << ens.count(-1) << "\n" ;
cout << "appartenance de 500 : " << ens.count(500) << "\n" ;
set
ensa = ensb = ens ;
cout << "ensemble a : " ; affiche(ensa) ;
cout << "ensemble b : " ; affiche(ensb) ;
}
void fct (set
{ cout << "ensemble reçu par fct : " ; affiche(e) ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
void fctref (set
{ cout << "ensemble recu par fctref : " ; affiche(e) ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
void affiche (set
{ set
cout << "[ " ;
for (ie=e.begin() ; ie!=e.end() ; ie++)
cout << *ie << " ";
cout <<"] \n" ;
}
donnez 10 entiers
3 5 3 1 8 5 1 7 7 3
il y a : 5 entiers differents
qui forment l'ensemble : [ 1 3 5 7 8 ]
ensemble recu par fct : [ 1 3 5 7 8 ]
au retour de fct, il y en a 5
qui forment l'ensemble : [ 1 3 5 7 8 ]
ensemble recu par fctref : [ 1 3 5 7 8 ]
au retour de fctref, il y en a 8
qui forment l'ensemble : [ -3 -2 -1 1 3 5 7 8 ]
appartenance de -1 : 1
appartenance de 500 : 0
ensemble a : [ -3 -2 -1 1 3 5 7 8 ]
ensemble b : [ -3 -2 -1 1 3 5 7 8 ]
On peut également créer artificiellement une classe set_int, dérivée de set
laquelle on surdéfinit l’opérateur <<, comme dans cet exemple qui fournit les mêmes
résultats que le précédent :
#include
#include
using namespace std ;
388
