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

SL & STL C++ Discussion :

initialiser un vecteur de vecteur


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut initialiser un vecteur de vecteur
    Bonjour
    J'ai une structure de données de vecteur de vecteur donc matrice qui représente un plateau comme un échiquier par exemple.
    j'ai fait la déclaration comme ceci dans plateau.h:
    je voudrais savoir comment initialiser v avec 'val1 et val2 comme nombres de lignes et de colonnes.
    je sais qu'il y a resize pour un vecteur mais je ne sais pas quoi utiliser pour un vecteur de vecteurs.
    merci
    merci

  2. #2
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<vector<int> >  v ( val1, vector<int>( val2) );

  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 est loin d'être la meilleure structure pour stocker une matrice de taille fixe !
    Es-tu sur de ce que tu fais ?

  4. #4
    Membre confirmé
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Citation Envoyé par poukill Voir le message
    Un vecteur de vecteur est loin d'être la meilleure structure pour stocker une matrice de taille fixe !
    Es-tu sur de ce que tu fais ?
    en fait la taille n'est pas fixe.
    en fait j'ai un fichier qui contient les informations concernant mon plateau.
    le première ligne du fichier contient deux nombres qui correspondent aux nombre de lignes et nombre de colonnes. après le reste du fichier est sous forme de matrice contenant des entiers. voilà un exemple
    3 4
    23 12 11 14
    12 15 13 11
    29 2 0 10

    Gâce à l'opérateur istream je charge le fichier dans un vecteur de vecteur comme ceci
    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
    istream& operator>>(istream& i, plateau& p) {
    	int val1, val2;
    	int valcourante;
    	i>>val1;
    	p.setnblignes(val1);
    	i>>val2;
    	p.setnbcolonnes(val2);
     
    	for (int i=0; i<val1; ++i) {
    	//p.v[i].resize(val2);
    		for (int j=0; j<val2; ++j) {
    		i>>valcourante
    		p.v[i][j] = valcourante;
    		}
    	}
    }
    mais j'ai besoin d'initialiser ma matrice avant la boucle for, donc c'est pour ça.

    le fichier qui contient le plateau peut changer n'importe quand.
    j'éspère que je suis sur le bon chemin.

    merci pour l'aide

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Ben tu peux parfaitement utiliser resize()...

    Le tout, c'est qu'il faut le faire correctement, à savoir
    • redimentionner d'abord le tableau de tableau, puis
    • pour chaque élément de ce tableau de tableau, redimentionnner le tableau contenu


    Cela prendrait une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define MAX_COL 8
    #define MAX_LINE 8
    int main()
    {
        vector<vector<int> > tab;
        tab.resize(MAX_COL);
        for(size_t i=0;i<8;i++)
            tab[i].resize(MAX_LINE);
        /*...*/
        return 0;
    }
    (je n'ai utilisé des define pour max_col et max_line que pour éviter les "nombre magiques ")
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/09/2014, 10h22
  2. Vecteur de vecteur de vecteur ?
    Par oodini dans le forum C++
    Réponses: 22
    Dernier message: 03/10/2011, 13h12
  3. Réponses: 6
    Dernier message: 22/09/2011, 14h59
  4. Vecteurs de vecteurs de vecteurs
    Par El Charpi dans le forum C++
    Réponses: 4
    Dernier message: 11/01/2010, 21h29
  5. Vecteurs de vecteurs ?
    Par Edouard Kaiser dans le forum C++
    Réponses: 16
    Dernier message: 02/05/2005, 14h39

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