TP #3 de C++ ISIMA 2ème année : Forme
			canonique de Coplien, Redéfinition d'opérateurs et exceptions
			minimales
 
		1. Exercice #1 : La classe vecteur simple
 
		Le but de ce TP est de mettre en place la forme canonique de Coplien sur
			une classe nommée Vecteur et modélisant un tableau
			d'entiers. Trois attributs seront créés :
 
		 
			- Un pointeur sur des entiers pour le stockage des nombres
- Un entier nommé capacité et traduisant la
				capacité de stockage physique du vecteur
- Un entier nommé taille et traduisant le niveau de
				remplissage du vecteur, c'est à dire l'indice du dernier
				élément utilisé. A l'initialisation du vecteur (hors
				constructeur de recopie), taille est à zéro.
1.1 Implémentation de la forme canonique de Coplien
 
		Rappelons que la forme canonique de Coplien nécessite les
			éléments suivants :
 
		 
			- Constructeur par défaut
- Celui-ci sera en fait un constructeur prenant la capacité du
				vecteur en paramètre avec une valeur par défaut.
- Constructeur de recopie
- Opérateur d'affectation
- On pourra coder dans une méthode séparée
				(réfléchir sur son accessibilité) la partie commune
				à ces deux méthodes
- Destructeur
1.2 Autres méthodes
 
		1.2.1 Accès aux éléments du tableau
 
		Une seule méthode est proposée pour accéder en
			écriture aux éléments du vecteur :
 
		 
			- void push_back(int) 
- rajoute un élément dans le tableau après le
				dernier utilisé. L'exception "Depassement de capacité" sera
				levée si la capacité maximale est atteinte
Pour l'accès en lecture aux éléments du vecteur,
			seul l'opérateur [] sera proposé en version constante. Tout
			accès au delà de la taille (et donc, a fortiori, au dela de la
			capacité) déclenchera l'exception "En dehors des bornes".
 
		1.2.2 Autre opération
 
		Finalement, on proposera la redéfinition de l'opérateur de
			sortie sur flux (<<). Vous proposerez deux implémentations :
			
 
		 
			- L'une utilisant le mot clef friend
- L'autre, l'opérateur []
Afin de les distinguer, vous utilisez des directives de compilation
			conditionnelle (#ifdef). 
 
		 Solution  
		1.3 Pour aller plus loin dans l'exercice
 
		 
			- Comparez les performances des deux versions de l'opérateur
				(<<) à l'aide de mesures temporelles
- Proposez un système d'affectation et de recopie n'effectuant
				le recopie effective des blocs de mémoire que dans le cas où il y
				a accès en écriture