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 et s’agrandit automatiquement lorsque cela est nécessaire, exactement comme fonctionne std::vector en interne !

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 comporter :
    • 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 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 renvoie l’élément à l’index donné
    • Une méthode getSize() qui renvoie le nombre actuel d’éléments
    • Une méthode getCapacity() qui renvoie la capacité actuelle
  • main.cpp : lisez une capacité initiale et un nombre de valeurs à ajouter. Lisez ensuite ce nombre de valeurs entières et ajoutez chacune d’elles à 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 le suivant :

  • 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 ajoutez un troisième élément, la capacité doit passer à 4. Cela illustre le principe RAII. Votre classe acquiert de la mémoire dans le constructeur et la libère dans le destructeur, ce qui garantit l’absence de fuites mémoire.

Incluez votre fichier d’en-tête dans main.cpp à l’aide de #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: Create a DynamicArray with the initial capacity

    // TODO: Lire numValues entiers et pousser 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

Entraînez-vous par vous-même : Compilateur C++ en ligne