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 dynamique Tridimensionel


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut Copie de tableau dynamique Tridimensionel
    Bonjour, pour la réalisation d'un algorithme de JDLV dans un espace 3D, je me retrouve avec deux variables bool *** dans une class. Je veut que bool ***NewCell soit la copie de bool***Cell.
    Si je fait NewCell = Cell, j'obtion une affectation par référence(c'est bien comme sa que s'a sapelle?), or je voudrais uen copie des données.
    Je voudrais donc savoir comment faire.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Si je comprends bien, tu as deux tableaux tridimentionnels de pointeurs bool...
    Si c'est cela, il te suffit de procéder comme pour un tableau normal...
    Il faut utiliser les indices pour affecter un autre tableau.

    PS: Ca fait un baille!

  3. #3
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je n'ai pas comprit ?
    Pour un tableau static, je fait NewTab = Tab. Et pour un dynamique... En fait je ne sais plus pour le dynamique ^^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  4. #4
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Moi je copie jamais mes tableaux comme ça...
    Je copie les éléments les uns après les autres...

  5. #5
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    une solution simple et rapide pourrait etre d'utiliser memcpy.

    XXiemeciel
    XXiemeciel

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut Re: Copie de tableau dynamique Tridimensionel
    Citation Envoyé par JC_Master
    Bonjour, pour la réalisation d'un algorithme de JDLV dans un espace 3D, je me retrouve avec deux variables bool *** dans une class. Je veut que bool ***NewCell soit la copie de bool***Cell.
    Si je fait NewCell = Cell, j'obtion une affectation par référence(c'est bien comme sa que s'a sapelle?), or je voudrais uen copie des données.
    Je voudrais donc savoir comment faire.
    salut,

    la soluce de base:
    il faut connaitre les dimensions du tableau à copier pour allouer le nouveau tableau
    faire 3 boucles for imbriquées pour copier les éléments du 1er vers le 2eme tableau.

    faire tab2 = tab1 c'est juste une copie de pointeur. les 2 pointeurs pointent vers le meme emplacement mémoire. si l'un des deux pointeur est désalloué, le 2eme est invalidé (pas bien )

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Quand même, à partir de 3 étoiles, ça devient inhumain de ne pas utiliser une structure de tableau un peu plus appropriée...

  8. #8
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    bigboomshakala>D'accord, je fait donc de la même fasson que j'ai initialiser le tableau.
    Loulou24>Quesque tu entend par structure de tableau plus appropriée?
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  9. #9
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par JC_Master
    bigboomshakala>D'accord, je fait donc de la même fasson que j'ai initialiser le tableau.
    Loulou24>Quesque tu entend par structure de tableau plus appropriée?
    un std::vecotr<bool> par exemple

    XXiemeciel
    XXiemeciel

  10. #10
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je pensse pas vraiment que se soit la peine, sa iras très bien comme sa, mais merci ^^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  11. #11
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Pourtant ce serais mieux, un vector a une dimension et un offset pour acceder a l'emplacement x,y,z.

    XXiemeciel
    XXiemeciel

  12. #12
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je peut avoir un petit exemple d'initialisation et d'afectation?
    (C'est que je n'ai utiliser les vecteur qu' une fois dans ma vie...)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  13. #13
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Pour un tableau à une dimension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::vector<bool> MonVecteur(27) //3^3
    while(int i=0;i < 27; i++)
    {
    MonVecteur[i]=NULL;
    }

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par reggae
    Pour un tableau à une dimension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::vector<bool> MonVecteur(27) //3^3
    while(int i=0;i < 27; i++)
    {
    MonVecteur[i]=NULL;
    }
    Affecter NULL à des booléens, je ne sais pas si c'est ce qu'on fait de plus intuitif... D'autant plus que pour remplir un vecteur avec une même valeur, on peut au choix utiliser std::fill ou le constructeur approprié.

    Pour affecter un vecteur à un autre, suffit d'utiliser l'opérateur = qui a été surchargé en conséquence.

  15. #15
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Je suis parfaitement d'accord avec toi! Mais j'ai pensé que pour cet exemple, cela suffisait.

  16. #16
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Donc :
    typedef std::vector<std::vector<std::vector<bool>>> Bool3D;
    Bool3D Vecteur;

    Et esque on peut initialiser / copier ce tableau simplement, sans passer par les boucles comme j'ai procèder avec mes tableau? Et surtout esque sa vaut vraiment le coup...
    (Je sais que je pourais jetter un oeil a google, mais la je suis un peut OQP avec OpenGL, donc je vérais sa plus tard. Sauf si quelquin s'enuit sur le forum et a du temp a perdre )
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  17. #17
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Oula,

    vector de vector de vector, je sort de l'avion et je vois ca arg ... je vais me coucher

    utilise un vector tout simple et calcul un offset si tu veux 3 dimensions

    offset = y*xSize*zSize + x*zSize + z

    désolé mais je viens d'atterir a Paris et j'ai du mal avec le clavier AZERTY alors je vous laisse sur ces belles paroles.

    XXiemeciel
    XXiemeciel

  18. #18
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je suis sur qu'on vas me prendre pour un foux... Mais c'est quoi un offset???
    (Sinon, j'aime bien le clavier azerty moi ^^ J'ai jamais connnu d'autre clavier :p)

    Sinon, j'ai l'impression d'avoir une fuite mémoire...
    Pour suprimer un tableau 3D on fait bien delete [] tab3D? (le tableau est un bool *** tab3D)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  19. #19
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    ça m'étonnerait: Comme tu as plusieurs niveaux, de tableaux, il te faut au moins un delete[] par niveau...

    Sauf si tu as alloué tous les niveaux à la suite dans un seul espace mémoire, dans ce cas un seul delete[] suffirait...

    Bref, la destruction dépend de la façon dont la création est implémentée...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    D'accord, il faut aussi que je fasse une fonction pour détruire mes tableau :'(
    Je suis en train de me demander si un vecteur ne serais pas bcp mieu :p
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Tableau Dynamique procédure de copie
    Par Geo34 dans le forum Débuter
    Réponses: 16
    Dernier message: 20/04/2009, 19h53
  3. AFFICHER UN TABLEAU DYNAMIQUE
    Par ghassenus dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2002, 14h19
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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