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 :

Insertion dans un tableau deux dimensions vector<>


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut Insertion dans un tableau deux dimensions vector<>
    Bonjour,

    Donc le problème est le suivant :

    J'ai créé un tableau 2 dimensions afin de contenir des pointeurs vers une classe Item. ce qui donne donc :

    std::vector<std::vector<Item *>> tableau;

    Jusque là je pense que c'est bon.

    Le problème est que ce tableau est amené a s'aggrandir ou à diminuer au cours du programme.

    - Pour l'initialisation comment dois-je faire dans un premier temps pour allouer un tableau de taille ROW x COL ???
    Je vois comment le faire pour un tableau vector une dimension mais là j'avoue que je bloque (surement bètement) sur la double allocation.

    Enfin deuxième question :

    - Si je souhaites insérer un Item* à un endroit bien précis au milieu de mon tableau d'Item*, comment dois-je procéder ?
    Je sais qu'on peut insérer à la fin au début, mais je n'ai pas vu de méthode pour un insérer à un endroit précis sans effacer quoique ce soit (je veux juste décalé le reste)

    Soyez indulgent je découvre la STL et le vector<>...

    Merci par avance pour votre aide.

  2. #2
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par défaut


    1) Pour gérer une matrice ROW x COL un vector<vector<> > n'est pas le mieux adapté. Ne peux tu pas te contenter d'un vecteur 1 dimension et gérer toi même l'indexage tableau[i + j*nb_col] ?
    (ou cf eviter tableau tableau pour une matrice )

    2) Tu as la méthode insert pour un vector. Mais la encore méfies-toi : le vector est optimisé pour ajouter en fin (push_back) donc si tu fais beaucoup d'insertions vector n'est peut etre pas le meilleur container (voir std::List peut être)
    (cf choix container)

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Un vecteur de vecteur, c'est une matrice... Et c'est tout de suite plus compliqué à gérer...
    Soit:
    1) Tu cherches à apprendre, alors peut être tu pourrais coder toi même une classe Matrice dans laquelle tu définirais les bons opérateurs etc... pour les besoins de ton application
    2) Tu ne veux pas réinventer la roue, et donc tu peux utiliser une des nombreuses bibliothèques de matrices déjà existantes...

    La deuxième solution me parait bien, car les bonnes bibliothèques sont à base de template, d'itérateurs, bref, dans le moule "C++". Et ça c'est important.
    Par exemple, Boost.ublas, Vigra, Blitz++, etc... il y a en a la pelle

    Bonne continuation!

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Par exemple, Boost.ublas, Vigra, Blitz++, etc... il y a en a la pelle
    Ca ce sont des matrices mathématiques (et je ne pense pas qu'il ait besoin de diagonaliser ses matrices d'Item*, ou de calculer leur déterminant ).
    Pour des tableaux à deux dimensions il vaudra mieux prendre des choses du style boost.multiarray.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    +1

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut
    Effectivement mes besoins sont assez simple, j'ai juste besoin d'organiser mes item* dans une grille 2 dimensions et de pouvoir en inserer ou en retirer à des endroits précis...

    Il me parait un peu périlleux de gérer ça dans un conteneur 1 dimension...

    Je ne connais pas du tout boost.multiarray mais s'il permet de faire ce que je veux je vais essayer de me documenter dessus...

    Si entre temps vous avez d'autres idées pour résoudre mon problème je suis preneur...

    Merci déjà pour votre aide

Discussions similaires

  1. Mettre un fichier csv dans un tableau à deux dimensions
    Par neeux dans le forum Général Python
    Réponses: 5
    Dernier message: 05/03/2007, 16h36
  2. Réponses: 6
    Dernier message: 25/02/2007, 17h56
  3. Réponses: 9
    Dernier message: 05/01/2007, 20h04
  4. Rechercher dans un tableau deux dimensions
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/09/2006, 20h29
  5. 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

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