diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-13 19:31:33 -0500 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2023-01-13 19:31:33 -0500 |
commit | 267868847b0885f60aaae43afd4f54ce028181d8 (patch) | |
tree | 1cce415f624760481f2f4cc49d42c65fbd857e55 /vecteur.cpp | |
parent | 82539db317b616b41b6e16629f19ddb4a49f6cc7 (diff) | |
parent | 86fbed0811fc4ef36ffb66b3f774df61eb87c24b (diff) |
Merge branch 'development'
Diffstat (limited to 'vecteur.cpp')
-rw-r--r-- | vecteur.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/vecteur.cpp b/vecteur.cpp new file mode 100644 index 0000000..56b59ed --- /dev/null +++ b/vecteur.cpp @@ -0,0 +1,74 @@ +#include "vecteur.h" + +Vecteur::Vecteur(){ + capacite = 1; + taille = 0; + formes = new Forme*[capacite]; +} + +Vecteur::~Vecteur(){ + vider(); + delete[] formes; +} + +bool Vecteur::estVide(){ + return (taille == 0); +}; + +Forme *Vecteur::getForme(int index){ + return (index < 0 || index >= taille) ? NULL : formes[index]; +}; + +int Vecteur::getTaille(){ + return taille; +}; + +int Vecteur::getCapacite(){ + return capacite; +}; + +void Vecteur::afficher(ostream &s){ + for (int i = 0; i < taille; i++) { + formes[i]->afficher(s); + } +}; + +bool Vecteur::ajouterForme(Forme *f) { + if (taille == capacite) { + // Double the size of the array + int newCapacite = capacite * 2; + Forme **newFormes = new (nothrow) Forme*[newCapacite]; + if(newFormes==nullptr) return false; + for (int i = 0; i < taille; i++) { + newFormes[i] = formes[i]; + } + capacite = newCapacite; + delete[] formes; + formes = newFormes; + } + formes[taille] = f; + taille++; + return true; +}; + +Forme *Vecteur::supprimerForme(int index) { + Forme *f = formes[index]; + while (index < taille) { + formes[index] = formes[index + 1]; + index++; + } + formes[taille] = NULL; + taille--; + return f; +}; + +void Vecteur::vider() { + for (int i = 0; i < taille; i++) { + delete formes[i]; + } + capacite = 1; + taille = 0; + Forme **newFormes = new Forme*[capacite]; + delete[] formes; + formes = newFormes; +} |