Tableau d'objets dynamique en c++

Bonjour, je suis débutant en c++ et j’aimerais savoir comment faire pour créer un tableau dynamique d’objets, c’est à dire un tableau d’objet donc je puisse modifier la taille etc …, sachant que ce tableau d’objet doit etre un des attributs d’un autre objet

J’ai donc le schéma suivant :

objet1
|
| - Variables …
| - Tableau d’objets contenant obj[0], obj[1] …

Merci d’avance de vos réponses

NC

Personnellement j’irais voir du coté des objets de type vector.
http://www.msoe.edu/eecs/ce/courseinfo/stl/vector.htm

… heu, je ne vois pas en quoi cela peut m’aider

le vector te permet de stocker des objets, tu peux en rajouter autant que tu veux (la methode push_back il me semble) y acceder par indice,… bref que du bon pour gerer un tableau d’objets sans se prendre la tete :slight_smile:

En plus tu peux utiliser les algorithmes standards pour tout ce qui est tri, recherche etc… à condition de redefinir un operateur de comparaison (vu que tu stocke des objet, leur comparaison n’est pas forcement evidente).

oué, en fait c’est une liste chaînée, mais tu peux accéder aux éléments comme un tableau :

class Object {

   // les différents champs et méthodes de ton objet

};

Pour créer le tableau ( il est vide au départ ) :

vector<Object> tabObj;

Pour ajouter des éléments dynamiquement :

Objet obj1;
Objet obj2;

tabObj.push_back(obj1);   // ajoute à la fin du tableau
tabObj.push_back(obj2);   // ajoute encore un élément à la fin du tableau

Pour supprimer un élément à une position particulière tu utilises la méthode erase
Sinon tu peux ajouter ton élément à une position particulière tu tableau à l’aide de la méthode insert

Pour accéder à l’élément tu fais : tabObj[indice], ce qui équivaut à tabObj.at(indice).

Si tu veux tester si ton tableau est vide ou non, tu fais : if (tabObj.empty()) …

tu peux aller jeter un coup d’oeil ici

Aussi pour utliser la classe vector, il te faut l’inclure avec :

#include <vector>

si t’as pas fais using namespace std; il te faudra faire std::vector<Object> tabObj pour déclarer l’élément au lieu de vector<Object> tabObj.

Et surtout, tu peux lire http://www.cppreference.com/

Non?

Tout est dans la doc, même si pas souvent bien expliquer :slight_smile:

ok, merci de tous vos conseils