Inserer un objet dans un vecteur d`objet
Résolu
narymene
-
narymene Messages postés 4 Statut Membre -
narymene Messages postés 4 Statut Membre -
Bonjour,
j`ai un problème avec un tableau d objet qui s`appelle population de type AG (MA classe s`appelle AG), alors je veux que chaque élément du tableau (population [i] = AG();) comment je peux le mettre en place ? merci bien d`avance, excellente journée.
j`ai un problème avec un tableau d objet qui s`appelle population de type AG (MA classe s`appelle AG), alors je veux que chaque élément du tableau (population [i] = AG();) comment je peux le mettre en place ? merci bien d`avance, excellente journée.
2 réponses
-
Bonjour,
Il faudrait nous en dire un peu plus sur le type utilisé pourpopulation
.
Si c'est un "tableau" standard (comme en C), cela dépend de la taille que tu as allouée (e.g. avecnew
oumalloc
). S'il y a suffisamment de place allouée, tu peux décaler les éléments "d'une case" après l'index d'insertion avecmemcpy
, puis insérer ton élément à l'index choisi. Sinon il faudra faire une ré-allocation mémoire. Bref, c'est plus compliqué.
S'il s'agit d'unstd::vector
(voir la STL), tu peux utiliser la méthodeinsert
.
Exemple :
#include <iostream> #include <ostream> #include <vector> // Écrit le contenu d'un vecteur template <typename T> std::ostream & operator << (std::ostream & out, const std::vector<T> & v) { out << '['; // C++ moderne for (const T & x : v) { out << ' ' << x; } /* // Anciennes versions de C++ for (typename std::vector<T>::const_iterator it = v.begin(); it != v.end(); it++) { out << ' ' << *it: } */ out << ']'; return out; } int main(){ using namespace std; // C++ moderne vector<int> v = {10, 20, 30, 40}; /* // Anciennes versions de C++ vector<int> v(4); v[0] = 10; v[1] = 20; v[2] = 30; v[3] = 40; */ vector<int>::iterator it = v.begin() + 3; v.insert(it, 35); cout << v << endl; return 0; }
Résultat :
(mando@silk) (~) $ g++ toto.cpp
(mando@silk) (~) $ ./a.out
[ 10 20 30 40]
[ 10 20 30 35 40]
Ensuite, il faudrait voir ce que fait ton programme, car ça n'est pas clair sistd::vector
est le container le plus adéquat. Selon ce que fait ton programme, utiliserstd::set
oustd::list
peut-être plus approprié. -
Bonjour,
Il faut préciser ce qui te pose des problèmes. Par exemple, le codepopulation[i] = AG();
peut fonctionner. Si c'est le problème, il nous faut plus de données concrètes pour te répondre.