TP de C++ 1 : les vecteurs à dimensionnement dynamique
But du TP
Le but de ce TP est de construire une classe C++ vecteur
générique (template) capable de se redimensionner.
Structure de la classe vecteur
Les principales méthodes sont les suivantes :
-
Un opérateur [] permettant d'accéder aux
éléments contenus dans le vecteur comme s'il s'agissait d'un
simple tableau. Toute tentative d'accès en dehors des limites du tableau
avec l'opérateur crochet devra se solder par une exception.
-
Une méthode nommée append qui permet
dajouter un élément à la fin du tableau. Ceci
nécessite donc de connaître deux informations sur le
tableau :
- La taille physique de dimensionnement du tableau
- Le niveau de remplissage i.e. le nombre déléments
effectivement présents dans le tableau
Lorsque le niveau de remplissage atteint la taille physique du tableau, il
faudra le redimensionner. Ce processus s'effectue en 4 étapes :
- Calcul de la nouvelle taille du tableau : t'=t(1+x)
où x est un nombre strictement positif habituellement compris entre 0.5
et 1
- Allocation du nouvel espace de travail. Vous renverrez une exception si
l'allocation est impossible
- Recopie du contenu du tableau dans le nouvel espace
- Destruction de l'ancien espace de travail
Une méthode nommée pop permettant de
supprimer le dernier élément du tableau
Quelques indications supplémentaires à respecter
- Le paramètre x devra être passé en template
sous la forme d'un entier (pourcentage).
Si le compilateur le permet (pas de
problème avec g++), essayez de fixer une valeur par défaut
à ce paramètre template
- N'oubliez pas de créer une classe itérateur pour cette classe
vecteur !
- Pour aller plus loin : prévoyez un dispositif de diminution de
taille du tableau lorsque le niveau de remplissage devient petit devant la
taille
- Sur shp, vous pouvez utiliser le compilateur g++
après avoir ajouté le répertoire /home/gnu/bin
dans le PATH
Bon courage !