Inserer un objet dans un vecteur d`objet

Résolu
narymene -  
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.

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Il faudrait nous en dire un peu plus sur le type utilisé pour
    population
    .

    Si c'est un "tableau" standard (comme en C), cela dépend de la taille que tu as allouée (e.g. avec
    new
    ou
    malloc
    ). 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 avec
    memcpy
    , 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'un
    std::vector
    (voir la STL), tu peux utiliser la méthode
    insert
    .

    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 si
    std::vector
    est le container le plus adéquat. Selon ce que fait ton programme, utiliser
    std::set
    ou
    std::list
    peut-être plus approprié.
    0
    1. narymene Messages postés 4 Statut Membre
       
      merci pour votre reponse, j'ai regle le probleme
      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Il faut préciser ce qui te pose des problèmes. Par exemple, le code
    population[i] = AG();
    peut fonctionner. Si c'est le problème, il nous faut plus de données concrètes pour te répondre.
    0
    1. narymene Messages postés 4 Statut Membre
       
      merci bien, j`ai regle le probleme
      0