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 :

copie de tableau


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut copie de tableau
    Bonjour,
    j'ai un pointeur un pointeur sur un tableau de structures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maStructure *myVar = new maStructure[nb]
    dans le code de ma fonction je veux faire une copie de ce tableau et modifier l'original
    alors c'est correcte d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maStructure *tmpVar=myVar
    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Que veux tu dire exactement par "faire une copie et modifier l'original?"

    • Veux tu dire que tu veux qu'au retour de la fonction l'original soit modifié alors que dans la fonction tu as travaillé sur la copie du pointeur? Si c'est ça oui (à part que le type de myVar et tmpVar est maStructure[]* et non maStructure*), ce que tu montres est bon.

    • Si par contre tu veux modifier l'original et garder une copie non modifiée des données d'origine, alors non, car avec la copie de pointeur myVar et tmpVar pointent sur le même objet, donc les modifications seront visibles par myVar et par tmpVar. Si tu veux garder une des copies et modifier l'autre, il faut vraiement copier le tableau:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      maStructure[]* tmpVar=new maStructure[nb];
      for(int i=0;i<nb;i++){
         tmpVar[i]=myVar[i];
      }
      /*maintenant myVar et tmpVar pointent sur deux tableaux distincts avec les mêmes donnes. On peut changer les struct contenues dans myVar sans changer le contenu de tmpVar.*/

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Tu devrais utiliser des std::vector<>...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par oodini Voir le message
    Tu devrais utiliser des std::vector<>...
    Entièrement d'accord!

    ma réponse ciblait le "est-ce que je peux modifier", mais d'une manière générale avec un std::vector la copie fonctionnerait sans cette prise de tête. Un point auquel il faut faire attention cependant: si ta structure contient des pointeurs tu peux quand même te retrouver avec des modifications qui se répercutent sur les deux copies...dans ce cas là il faut faire une deep copy...Puisqu'on est en C++, wrapper ta struct dans une classe qui se chargera de la copie.

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Bonjour,
    Merci pour vos réponses
    En fait je suis dans une situation où je suis obligée à utilisé cette ctructure donc je ne peux pas utiliser le std::vector
    en fait ce que je veux faire c'est faire un clone de mon tableau, comment puis-je faire?

    Merci

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par 3aychoucha Voir le message
    Bonjour,
    Merci pour vos réponses
    En fait je suis dans une situation où je suis obligée à utilisé cette ctructure donc je ne peux pas utiliser le std::vector
    en fait ce que je veux faire c'est faire un clone de mon tableau, comment puis-je faire?

    Merci
    Tu as lu la réponse de therwald ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie un tableau dans un autre
    Par Montor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2008, 21h29
  2. redimenssionnement & copie de tableau
    Par TOPGUN89 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/09/2007, 14h45
  3. Format des surfaces et copies vers tableau
    Par ultimanu dans le forum DirectX
    Réponses: 7
    Dernier message: 12/04/2007, 16h33
  4. Copie de tableau dynamique Tridimensionel
    Par Zenol dans le forum C++
    Réponses: 23
    Dernier message: 19/12/2005, 16h00
  5. [Tableau]Problèmes avec copie de tableau
    Par Itachi-san dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 17h23

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