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

Boost C++ Discussion :

boost::multi_array --> Peut-on modifier la dimension ?


Sujet :

Boost C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut boost::multi_array --> Peut-on modifier la dimension ?
    Bonjour, je voulais savoir s'il était possible d'utiliser les multi_array en ne connaissant pas à l'avance le nombre de dimensions du "tableau multiple".

    La taille de chaque dimension n'est bien évidemment pas non plus connue à l'avance mais les multi_array sont à la base fait pour ça.

    Je m'explique peut-on déclarer un boost::multi_array de dimension très grande et ensuite diminuer sa taille.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define MAX_DIMENSION 1000
     
    multi_array<double, MAX_DIMENSION> monTableau;
    Et ensuite modifier la dimension, une fois connue.

    Pour arriver à 15, par exemple, au lieu de 1000 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int NB_DIMENSION 15;
     
    //monTableau.resize(NB_DIMENSION)

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boost::multi_array<int, 2> monTableau( boost::extents[10][8] ); // declare un tableau d'entiers à 2 dimensions, de dimensions 10x8
    monTableau.resize( extents[4][3] ); // resize le tableau en 4x3
    Pour plus d'infos, la doc de boost sur les multi_arrays.

    Hope it helps.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut
    Je sais que l'on peut faire ceci mais ce n'est pas ça que je demande.

    Je voudrai passer de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define MAX_DIMENSION 1000
     
    multi_array<double, MAX_DIMENSION> monTableau;
    à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main()
    {
    ...
    //je connait enfin la taille de multi_array
    int n = tailleMultiArray(...);
     
    // comment faire pour redimensionner mon multi_array sans en déclarer un nouveau comme ceci :
    //multi_array<double, n> monTableau;
    monTableau.
    Je voulais savoir si on pouvait contourner le problème de ne pas savoir la dimension de multi_array.


    Merci de la réponse quand même, j'avais choisi boost sachant qu'il puvait faire ce que tu explique mais maintenant je voudrai être encore plus générique...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut
    Citation Envoyé par r0d Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    boost::multi_array<int, 2> monTableau( boost::extents[10][8] ); 
    // declare un tableau d'entiers à 2 dimensions, de dimensions 10x8
     
    monTableau.resize( extents[4][3] ); 
    // resize le tableau en 4x3
    Dans ton tableau moi je voudrai faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //monTableau.resize( 1 ); 
    // resize le tableau en dimension 1

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut
    En fait mon problème est beaucoup plus général :

    Je voudrai pouvoir créer un tableau multidimensionnel dont je ne connais pas la taille à la compilation...
    Chaque dimension est lui même un tableau..

    Dois-je réinventer la roue ou existe t'il une lib JAVA ou C++ ?
    Merci

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Bon en fait, il s'avère qu'il n'y a pas de solution simple pour changer le nombre de dimensions. J'ai cru comprendre que les développeurs de boost ont décidé de ne pas le faire pour plusieurs raisons.

    Mais dans ton cas, je me demande si une liste de vecteur ne serait pas mieux. Ou une liste de multi_array?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut
    En effet, j'ai opté pour une liste de vecteur...

    J'obtiens ainsi une grille formé de points

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vetor<double > Point;
    vector<Point* > Grille;
    Merci quand même

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

Discussions similaires

  1. Peut-on modifier le titre de l'alert
    Par MokhTelnet dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/05/2010, 10h46
  2. Réponses: 3
    Dernier message: 13/06/2006, 14h16
  3. [VB.NET] Peut-on modifier le web config à chaud?
    Par Immobilis dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/11/2005, 14h13
  4. Réponses: 1
    Dernier message: 27/05/2005, 09h52
  5. Réponses: 16
    Dernier message: 18/07/2003, 17h16

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