main()
{ void affiche (vector) ;
int i ;
vector v1(5), v2(10) ;
for (i=0 ; i<5 ; i++) v1[i] = i ;
cout << "v1 = " ; affiche(v1) ;
for (i=0 ; i<10 ; i++) v2[i] = i*i ;
cout << "v2 = " ; affiche(v2);
v1 = v2 ;
cout << "v1 = " ; affiche(v1) ;
vector v3 = v1 ;
cout << "v3 = " ; affiche(v3) ;
vector v4 = v2 ;
cout << "v4 = " ; affiche(v4) ;
// const vector w(3) ; w[2] = 5 ; // conduit bien à erreur compilation
}
void affiche (vector v)
{ vector::iterator iv ;
for (iv=v.begin() ; iv !=v.end() ; iv++)
cout << *iv << " " ;
cout << "\n" ;
}
v1 = 0 1 2 3 4
v2 = 0 1 4 9 16 25 36 49 64 81
v1 = 0 1 4 9 16 25 36 49 64 81
v3 = 0 1 4 9 16 25 36 49 64 81
v4 = 0 1 4 9 16 25 36 49 64 81
On peut également créer artificiellement une classe vect, dérivée de vector, 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 ;
class vect : public vector
{ public :
vect(int n) : vector(n) {} // indispensable !!!!!!!
friend ostream & operator << (ostream &, vect &) ;
} ;
ostream & operator << (ostream & sortie, vect & v) // voir remarque ci-après
{ sortie << "<" ;
vector::iterator iv ;
for (iv=v.begin() ; iv!=v.end(); iv++) sortie << *iv << " " ;
sortie << ">" ;
return sortie ;
}
main()
{ int i ;
vect v1(5), v2(10) ;
for (i=0 ; i<5 ; i++) v1[i] = i ;
cout << "v1 = " << v1 << "\n" ;
for (i=0 ; i<10 ; i++) v2[i] = i*i ;
cout << "v2 = " << v2 << "\n" ;
v1 = v2 ;
cout << "v1 = " << v1 << "\n" ;
vect v3 = v1 ;
cout << "v3 = " << v3 << "\n" ;
vect v4 = v2 ;
cout << "v4 = " << v4 << "\n" ;
392
Précédent

- 393/398

Suivant