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 :

Allocation dynamique d'un tableau de pointeurs à 2 dimensions


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Par défaut Allocation dynamique d'un tableau de pointeurs à 2 dimensions
    Bonjour,

    J'ai un petit soucis pour allouer dynamiquement de la mémoire pour créer un tableau de pointeurs à 2 dimensions, voilà comment je procède :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Classe1
    {
       public :
       Type ***var1;
     
       Classe1(unsigned short int **_var1, unsigned short int _nombre)
       // **_var1 est un tableau à 2 dimensions contenant des unsigned short int
       // _nombre est la taille d'une dimension du tableau
       {
          Type ***var1 = new Type*[CONSTANTE][_nombre];
       }
     
    };

    Mais voilà le problème :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: `_nombre' cannot appear in a constant-expression

    Vu l'erreur, j'imagine que c'est pas une erreur de syntaxe

    Vous avez une idée de comment je peux faire ça?

  2. #2
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Pas besoin de pointeur ni de taille...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    #include <vector>
    ...
    class Classe1
    {
       public :
     
         Classe1(std::vector< std::vector< Type > > var) : _var1(var) { } ;
     
         std::vector< std::vector< Type > > _var1;
     
    };

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Par défaut
    En fait, j'aimerais garder une allocation dynamique et ne pas utiliser <vector> pour différentes raisons, principalement ne pas alourdir le programme avec un nouveau header et aussi parce que je sais pas l'utiliser

    Merci

  4. #4
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Juste 3 points alors :
    - vector alloue dynamiquement lui meme sa memoire et pas besoin de s'occuper de la desallocation...
    - y'a des tuto trés bien fait ici sur les conteners http://c.developpez.com/faq/cpp/?page=STL (il est vital de savoir s'en servir)
    - sinon y'a des tuto sur l'allocations dynamique http://c.developpez.com/faq/cpp/?page=pointeurs

    Je prefere laisser quelqu'un d'autre te donner une solution avec des pointeurs.... je risquerai de te dire des grosses conneries

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Par défaut
    Merci beaucoup j'ai trouvé

    Si ça en interesse certains, voilà la solution (en tout cas elle m'a l'air de fonctionner) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Classe1
    {
       public :
       Type ***var1;
     
       Classe1(unsigned short int **_var1, unsigned short int _nombre)
       // **_var1 est un tableau à 2 dimensions contenant des unsigned short int
       // _nombre est la taille d'une dimension du tableau
       {
          Type ***var1 = new Type**[CONSTANTE];
     
          for(int i = 0 ; i < CONSTANTE ; i++)
          {
             var[i] = new Type*[_nombre];
          }
       }
     
    };
    Merci beaucoup

  6. #6
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La solution est dans la FAQ, si tu tiens réellement à le faire à la main (ta solution ne gère pas les erreurs).

    Mais les deux raisons que tu donnes pour ne pas utiliser std::vector sont des excuses de fainéant... (ce qui est paradoxal car au final tu devras déployer beaucoup plus d'énergie pour gérer ta mémoire à la main qu'avec std::vector ou tout autre conteneur approprié)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Par défaut
    Tu parles de quel type d'énergie? la mienne ou celle de ma machine?

    Si c'est la mienne tant mieu, je veux faire en sorte que le programme soit le plus léger / rapide possible

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

Discussions similaires

  1. Allocation dynamique d'un tableau de pointeur
    Par Général03 dans le forum Débuter
    Réponses: 20
    Dernier message: 09/12/2009, 18h21
  2. allocation dynamique d'un tableau de pointeurs
    Par Dilettante dans le forum C++
    Réponses: 9
    Dernier message: 29/06/2007, 23h41
  3. Réponses: 2
    Dernier message: 05/03/2007, 18h37
  4. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  5. [PRO*C] Allocation dynamique d'un tableau de VARCHAR
    Par NéalZheimer dans le forum Interfaces de programmation
    Réponses: 5
    Dernier message: 07/07/2006, 13h02

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