Inserer un objet dans un vecteur d`objet

Résolu/Fermé
narymene - 12 sept. 2021 à 22:43
narymene Messages postés 4 Date d'inscription dimanche 12 septembre 2021 Statut Membre Dernière intervention 15 septembre 2021 - 14 sept. 2021 à 22:20
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.
A voir également:

2 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 14 sept. 2021 à 17:15
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
narymene Messages postés 4 Date d'inscription dimanche 12 septembre 2021 Statut Membre Dernière intervention 15 septembre 2021
14 sept. 2021 à 22:20
merci pour votre reponse, j'ai regle le probleme
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
14 sept. 2021 à 21:08
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
narymene Messages postés 4 Date d'inscription dimanche 12 septembre 2021 Statut Membre Dernière intervention 15 septembre 2021
14 sept. 2021 à 22:20
merci bien, j`ai regle le probleme
0