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

MFC Discussion :

Tableau à n dimensions


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Tableau à n dimensions
    Bonjour,

    je voudrais créer un tableau à n dimensions en allouant sa mémoire dynamiquement.

    Esk il y a des librairies standards pour ce genre de choses qui me rendrait la vie + simple.

    Merci d'avance

  2. #2
    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
    oué, ya la classe vector de la STL

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    merci, jvais me renseigner pour savoir comment ca marche.

  4. #4
    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
    quand tu dis à n dimensions, 'n' est connu?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    vector <vector <int> > tab2D; // tableau 2D de dimensions inconnues
     
    //allocation mémoire pour le tableau de taille 1000x300
    tab2D.resize(1000);
    for (int i=0;i<ta2D.size();i++)
    {
         tab2D[i].resize(300);
    }
     
    //accès aux valeurs
    int k = tab2D[850][125];

  5. #5
    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
    si v est un vecteur

    quand tu veux ajouter une valeur en bout de vecteur (et donc augmenter la taille) tu fais v.push_back(valeur) (renseigne toi là dessus). le vecteur est redimensionné.

    sinon tant que tu restes dans l'espace déjà réservé, tu fais un classique v[index] = valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vector <vector <int> > tab2D; // tableau 2D de dimensions inconnues 
     
    //on met les valeurs, redimensionnement dynamique
    int i = 0, j = 0;
    while (ma condition)
    {
         while (ma condition 2)
         {
              tab2D[i][j].pushback(uneValeur);
              j++;
         }
         i++;
    }

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    oui n est connu = 4.

    J'ai trouvé une doc dessus :

    http://www.cppreference.com/cppvector_details.html

    Jvais essayé de m'en sortir, si j'ai un pb jvous fais signe.

    Merci encore

  7. #7
    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
    http://artis.imag.fr/Membres/Xavier..../sommaire.html

    c'est en français. les parties 2 & 4 peuvent t'intéresser, en complément du lien que tu as déjà trouvé.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    bon j'ai un ptit problème,

    j'ai une classe et je voudrais que mon vector :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < vector <int> > > ArrayValue3D;
    soit accessible à toute les fonctions de la classe.

    De plus je voudrais créer mon vector en plein milieu d'1 des fonctions.

    C possible ???

  9. #9
    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
    je voudrais que mon vector ... soit accessible à toute les fonctions de la classe.
    il suffit d'en faire un attribut de la classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Class maClasse
    {
         protected:
              vector < vector < vector <int> > > ArrayValue3D;
              // ... mes autres attributs et méthodes protected
         public:
              //mes méthodes publics
    };
    De plus je voudrais créer mon vector en plein milieu d'1 des fonctions.

    C possible ???
    tout est possible avec la carte Kiwi! . tu as déjà déclaré le vecteur comme attribut de la classe, il ne te reste plus qu'à lui mettre des valeurs dedans avec des push_back (redimenssionnement dynamique) ou à lui allouer de l'espace si la taille est connue avec un resize dans la méthode de ton choix:
    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
    maMethode(mesParamètres)
    {
    //on met les valeurs, redimensionnement dynamique 
    int i = 0, j = 0,k = 0; 
    while (ma condition) 
    { 
         while (ma condition 2) 
         {
              while (ma condition 3)
              { 
                   ArrayValue3D[i][j][k].pushback(uneValeur); 
                   k++;
              }
              j++; 
         } 
         i++; 
    }

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    boost::multi_array<> pour les tableaux (rectangulaires) de n'importe quoi à plusieurs dimensions. Et si tu utilises la dernière version du compilateur de microsoft (dispo gratuitement en ligne), tu devrais aussi avoir accès aux bibliothèques de calcul matriciel comme Blitz++.

    Ces structures sont redimensionables, mais il vaux mieux les dimensionner avant de s'en servir.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Ca y est ca marche

    Merci à vous. Merci les forums. Merci Internet et vive la carte Kiwi

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

Discussions similaires

  1. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  2. [Collections] lecture tableau 2 dimensions
    Par heloise dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49
  3. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 10h53
  4. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

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