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

Langage C++ Discussion :

Vecteurs multi dimensionnels


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Par défaut Vecteurs multi dimensionnels
    Bonjour à tous,

    Me voici à nouveau devant vous pour un problème qui m'est bien étrange, et pour lequel j'ai pourtant effectuer plusieurs recherches. Afin de stocker une map (projet sonic-like), j'utilise un tableau à deux dimensions représentant les différentes cases. Seulement, on est en C++ et j'aimerais bien utiliser un vector à la place de ce fameux tableau ; tout d'abord, y'a t'il un réel intérêt à cela ou je me casse la tête pour rien, sachant que ce tableau sera de taille fixe ?

    Ensuite, j'ai essayé de déclarer mon vecteur comme suit mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::vector<int> > m_mapVec(MAP_HEIGHT, std::vector<int>(MAP_WIDTH));
    J'ai le droit à "Erreur de syntaxe : MAP_HEIGHT ; Erreur de syntaxe ; ')' ; Erreur de syntaxe : 'Absence de ')' avant ';''
    Pourtant MAP_HEIGHT est bien déclaré, et ça marche bien quand je l'utilise avec un tableau classique.

    Avez-vous une idée svp ?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par défaut
    Bonjour,
    Ce code doit compiler. Sauf si l'une des deux constantes n'est pas déclaré. Ou si <vector> n'est pas inclue.

    Pour ta première question, le vector n'est en effet pas optimum dans le cas d'un tableau de taille connue a la compilation. Pour ca il y a boost::array (qui fait aussi parti du tr1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::array<boost::array<int, MAP_WIDTH>, MAP_HEIGHT> m_mapVec;
    Ou mieux, le boost::multiarray.

    Après, l'utilisation d'un tableau C-style dans ce cas me semble tolérable, a condition de savoir gérer proprement les copies et construction(attention, c'est un pointeur). Par contre son interface n'est pas celui d'un conteneur STL-like, ce qui fait que tu aurais des conteneurs avec une interface différentes, ce qui peut nuire légèrement a la cohérence globale du code.

    Autrement dit, je suis quand même plus pour le array, ou multiarray.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    La question des tableaux 2D (et la réponse à ta question) à été abordée récemment : http://www.developpez.net/forums/d89...ctor-fonction/

    Si ton tableau est de taille fixe, tu peux utiliser boost::array

    Et pour les tableaux 2D, perso je prefère utiliser un vector 1D (ou un boost::array) de taille MAP_HEIGHT*MAP_WIDTH (en redéfinissant les operator (), ++, +=, ...)

Discussions similaires

  1. [Tableaux] Les tableaux multi-dimensionnels
    Par ludovik dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 12h21
  2. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23
  3. Réponses: 7
    Dernier message: 18/12/2005, 23h29
  4. [Collections]Vecteurs multi-dimentionnels ?
    Par Emilie MARQUOIS-OGEZ dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 07/11/2005, 13h37
  5. Réponses: 4
    Dernier message: 24/08/2005, 14h09

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