vector v(3) ; // vecteur de 3 entiers, non initialise
int i, j ;
for (i=0 ; i<4 ; i++)
t1[i] = v ;
for (i=0 ; i<4 ; i++)
for (j=0 ; j<3 ; j++)
t1[i][j] = i+j ;
for (i=0 ; i<4 ; i++)
{ for (j=0 ; j<3 ; j++)
cout << t1 [i] [j] << " " ;
cout << "\n" ;
}
}
0 1 2
1 2 3
2 3 4
3 4 5
On notera qu’on a quand même dû créer un objet temporaire v, de type vector, afin
d’initialiser les différents vecteurs de t1. Mais les choses restent néanmoins plus
simples que ce qui a été fait au chapitre 7, sans recourir aux composants standard.
Voici un second exemple qui montre comment utiliser la fonction at des classes
vector et vector > et traitant de façon appropriée l’exception out_of_range :
#include
#include
using namespace std ;
main()
{ try
{ vector > t1 (4) ; // vecteur de 4 vecteurs - espace
// entre > et >
vector v(3) ; // vecteur de 3 entiers, non initialisé
int i, j ;
for (i=0 ; i<4 ; i++)
t1.at(i) = v ;
for (i=0 ; i<4 ; i++)
for (j=0 ; j<3 ; j++)
(t1.at(i)).at(j) = i+j ;
for (i=0 ; i<4 ; i++)
{ for (j=0 ; j<3 ; j++)
cout << (t1.at(i)).at(j) << " " ;
cout << "\n" ;
}
}
catch (out_of_range oor)
{ cout << "exception out of range\n" ;
exit(-1) ;
}
}
On peut aussi, à l’image de ce que l’on a fait dans l’exercice précédent, chercher à se
tenir à l’interface imposée par l’énoncé. Dans ce cas, on crée artificiellement une
classe int2d, dérivée de vector, classe de base dont on exploite les
fonctionnalités comme le montre l’exemple suivant. Ici, nous avons attribué des valeurs
383
int i, j ;
for (i=0 ; i<4 ; i++)
t1[i] = v ;
for (i=0 ; i<4 ; i++)
for (j=0 ; j<3 ; j++)
t1[i][j] = i+j ;
for (i=0 ; i<4 ; i++)
{ for (j=0 ; j<3 ; j++)
cout << t1 [i] [j] << " " ;
cout << "\n" ;
}
}
0 1 2
1 2 3
2 3 4
3 4 5
On notera qu’on a quand même dû créer un objet temporaire v, de type vector
d’initialiser les différents vecteurs de t1. Mais les choses restent néanmoins plus
simples que ce qui a été fait au chapitre 7, sans recourir aux composants standard.
Voici un second exemple qui montre comment utiliser la fonction at des classes
vector
#include
#include
using namespace std ;
main()
{ try
{ vector
// entre > et >
vector
int i, j ;
for (i=0 ; i<4 ; i++)
t1.at(i) = v ;
for (i=0 ; i<4 ; i++)
for (j=0 ; j<3 ; j++)
(t1.at(i)).at(j) = i+j ;
for (i=0 ; i<4 ; i++)
{ for (j=0 ; j<3 ; j++)
cout << (t1.at(i)).at(j) << " " ;
cout << "\n" ;
}
}
catch (out_of_range oor)
{ cout << "exception out of range\n" ;
exit(-1) ;
}
}
On peut aussi, à l’image de ce que l’on a fait dans l’exercice précédent, chercher à se
tenir à l’interface imposée par l’énoncé. Dans ce cas, on crée artificiellement une
classe int2d, dérivée de vector
fonctionnalités comme le montre l’exemple suivant. Ici, nous avons attribué des valeurs
383
