Partage
  • Partager sur Facebook
  • Partager sur Twitter

Crer un tableau tridimensionnel de pointeurs

a taille variable

Anonyme
    5 novembre 2006 à 11:38:01

    Bonjour a tous.
    Je recherche un moyen sur de crer un tableau tridimensionnel de pointeur sans pour le moment les initialiser.
    car pour le moment je fais :
    Tuile *(Plateau2[num_unite_mvt][NBL][NBH]);   

    où num_unite_mvtest une variable et NBH,NBL sont des constante.
    Est ce possible ?
    Ou vais devoir faire un constructeur de base sans argument et âpres me débrouiller avec le constructeur de recopie.
    • Partager sur Facebook
    • Partager sur Twitter
      5 novembre 2006 à 11:57:06

      En C, un tableau tridimensionnel n'est qu'un tableau de tableau de tableau. Pour le crée dynamiquement, il faut donc que tu crée tes tableaux successivement.
      tableau[x][y][z]
      En clair, ton gros tableau contiendra x tableau, chacun contenant y tableau, chacun contenant z éléments du type de ton choix. En manipulant efficacement les boucles et les allocation de mémoire, tu peux créer dynamiquement un tableau multidimensionnel.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        5 novembre 2006 à 12:01:09

        j'ai oublie de précisé je bosse en C++.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          5 novembre 2006 à 12:07:13

          :lol: un sadomaso des poiteurs :lol:
          En tout cas ce qui est du C:

          type *tableau[]


          voilas un tableau de pointeurs après un tableau bidimmentionnelle de pointeurs ce n'est rien d'autre que sa:

          type *tableau[][]


          et un tridimme...

          type *tableau[][][]

          etc.. etc.. etc..
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            5 novembre 2006 à 12:12:14

            Ca je sais .
            Mais pour crée un tableau a taille variable de pointeurs sans les initialisé,comment on fait ?
            • Partager sur Facebook
            • Partager sur Twitter
              5 novembre 2006 à 12:21:59

              edit: "Sans l'initialiser", tu veux dire en l'initialisant loin après sa déclaration, c'est ça ?
              ************************************************************************************************

              Bah, c'est ce que je t'ai dit. Enfin, je te l'ai dit pour le C, mais les fonctions existent toujours en C++, donc ça change rien pas grand chose.
              Par exemple, pour créer : int* tableau[x][y][z]

              int x, y, z,
                  i, j;
              int ****tableau = NULL;

              /* tout plein de trucs */

              tableau = malloc(x * sizeof(int***));
              for(i = 0; i < x; i++)
              {
                  tableau[i] = malloc(y * sizeof(int**));
                  for(j = 0; j < y; j++)
                      tableau[i][j] = malloc(z * sizeof(int*));
              }


              Et là tu auras tu tableau tridimensionnel de pointeurs sur int. C'est du C, je te l'accorde, mais ça marche en C++ à ma connaissance.

              (puis ya pas de mal à aimer se faire du mal avec les pointeurs, hein ^^ )
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                5 novembre 2006 à 12:27:39

                Ok vais essayer en remplaçant malloc(x* sizeof(y)) par new y[x]
                • Partager sur Facebook
                • Partager sur Twitter

                Crer un tableau tridimensionnel de pointeurs

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown