IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Deep copy d'un tableau


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Deep copy d'un tableau
    Bonjour,

    comment puis-je faire une deep copy de ce tableau?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Myclass
    {
     char * name;
     int nb;
    }
    Myclass test=new test*[size];
    ....

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    N'utilise pas des char* mais des std::string
    N'utilise pas des Myclass* mais des std::vector<MaClasse> (au passage ta syntaxe de création avec new ne veut rien dire, j'ai donc peut-être mal compris ton intention)

    Et tout marchera par deep-copy sans que tu aies rien à faire de spécial.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <string>
    #include <vector>
     
    class Myclass
    {
     std::string name;
     int nb;
    };
    int main()
    {
      int size = 314;
      std::vector<Myclass> test(size); // test est un tableau de 314 éléments de type MaClasse.
      auto test2 = test; // deep-copy de test
    }
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Malheureusement je n'ai pas le droit d'utiliser ces headers ;(

    SInon je pense avoir trouvé la solution à mon problème avec ce constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Citizen( Citizen* rhs) :
        nb(rhs->nb),
        init(rhs->init),
        id(rhs->id),
        sign(rhs->sign),
        suiv(rhs->suiv == NULL ? NULL : new Citizen(*rhs->suiv)) {}
    Je copie tout avec une boucle for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void deepcopy (const Bigclass& rhs)
        {
            rhs.num[0]=rhs.num[0]-1;
            Citizen** array=rhs.table;
            Citizen **newarray = new Citizen*[size];
            for (int i = 0 ; i < 100; ++i)
                newarray[i] = new Citizen(array[i]);
            table=newarray;
            num[0]=1;
        }

Discussions similaires

  1. Copie d'un tableau dans un tableau plus grand
    Par oodini dans le forum Débuter
    Réponses: 3
    Dernier message: 24/09/2007, 16h09
  2. Copie d'un tableau à double entrée
    Par L8O8L dans le forum C
    Réponses: 3
    Dernier message: 19/03/2007, 09h17
  3. [forms 9i] COPY sur un tableau associatif
    Par Magnus dans le forum Forms
    Réponses: 2
    Dernier message: 21/09/2006, 11h11
  4. Réponses: 3
    Dernier message: 27/08/2006, 14h25
  5. [VBA Excel] Copie d'un tableau lignes filtrées comprises
    Par gojira dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/08/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo