Menu
Coddy logo textTech

Récapitulatif - Gestionnaire de tableaux dynamiques

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 17 sur 104.

challenge icon

Défi

Facile

Construisons une classe DynamicArray qui gère sa propre mémoire, en s'agrandissant automatiquement si nécessaire — exactement comme std::vector fonctionne en coulisses !

Vous allez créer deux fichiers pour organiser votre code :

  • DynamicArray.h : Définissez une classe DynamicArray qui gère un tableau d'entiers de taille dynamique. Votre classe doit avoir :
    • Des membres privés : un pointeur vers le tableau de données, la taille actuelle (nombre d'éléments) et la capacité (espace alloué)
    • Un constructeur qui prend une capacité initiale, alloue le tableau sur le tas (heap) et initialise la taille à 0
    • Un destructeur qui libère la mémoire allouée et affiche "DynamicArray destroyed"
    • Une méthode push(int value) qui ajoute un élément au tableau. Si le tableau est plein, elle doit doubler la capacité en allouant un nouveau tableau plus grand, en copiant les éléments existants et en libérant l'ancien tableau
    • Une méthode get(size_t index) qui retourne l'élément à l'index donné
    • Une méthode getSize() qui retourne le nombre actuel d'éléments
    • Une méthode getCapacity() qui retourne la capacité actuelle
  • main.cpp : Lisez une capacité initiale et un nombre de valeurs à ajouter. Ensuite, lisez ce nombre de valeurs entières et poussez chacune d'elles dans votre DynamicArray. Après avoir ajouté toutes les valeurs, affichez :
    • "Size: <size>"
    • "Capacity: <capacity>"
    • "Elements: <e1> <e2> ..." (tous les éléments séparés par des espaces)

Le format d'entrée sera :

  • Première ligne : capacité initiale (entier)
  • Deuxième ligne : nombre de valeurs à ajouter (entier)
  • Lignes suivantes : une valeur entière par ligne

Lors du redimensionnement, votre tableau doit doubler sa capacité. Par exemple, si vous commencez avec une capacité de 2 et que vous poussez un troisième élément, la capacité doit devenir 4. Cela démontre le principe RAII — votre classe acquiert de la mémoire dans le constructeur et la libère dans le destructeur, garantissant ainsi l'absence de fuites de mémoire.

Incluez votre fichier d'en-tête dans main.cpp en utilisant #include "DynamicArray.h".

Essayez vous-même

#include <iostream>
#include "DynamicArray.h"

using namespace std;

int main() {
    // Lire la capacité initiale
    int initialCapacity;
    cin >> initialCapacity;

    // Lire le nombre de valeurs à ajouter
    int numValues;
    cin >> numValues;

    // TODO: Créer un DynamicArray avec la capacité initiale

    // TODO: Lire numValues entiers et ajouter chacun dans le tableau

    // TODO: Afficher "Size: <size>"

    // TODO: Afficher "Capacity: <capacity>"

    // TODO: Afficher "Elements: <e1> <e2> ..." (tous les éléments séparés par des espaces)

    return 0;
}

Toutes les leçons de Programmation Orientée Objet