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 :

  1. 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.

  2. Une méthode nommée append qui permet d’ajouter un élément à la fin du tableau. Ceci nécessite donc de connaître deux informations sur le tableau :

    1. La taille physique de dimensionnement du tableau
    2. 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 :

    1. 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
    2. Allocation du nouvel espace de travail. Vous renverrez une exception si l'allocation est impossible
    3. Recopie du contenu du tableau dans le nouvel espace
    4. Destruction de l'ancien espace de travail
  3. Une méthode nommée pop permettant de supprimer le dernier élément du tableau

Quelques indications supplémentaires à respecter

  1. 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

  2. N'oubliez pas de créer une classe itérateur pour cette classe vecteur !
  3. Pour aller plus loin : prévoyez un dispositif de diminution de taille du tableau lorsque le niveau de remplissage devient petit devant la taille
  4. Sur shp, vous pouvez utiliser le compilateur g++ après avoir ajouté le répertoire /home/gnu/bin dans le PATH

Bon courage !