Iterateur sur vecteur a deux dimension [Résolu]

Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 2 mai 2006 à 18:07 - Dernière réponse :
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 2 mai 2006 à 19:07
Salut
Dans la librairie standard (encore ! :) )
J arrive (a peu pres) a me debrouiller avec un iterateur sur un vecteur a une dimension,
mais comment faire pour parcourir un vecteur a deux dimensions (un vecteur de vecteur quoi !)

    vector< vector > vect2d;  
    vector< vector >::iterator iter;   //j imagine que ca doit etre ca ?

    vect2d.resize(3);               //3 sous vecteurs
    vect2d[0].resize(10);      //de 10 elements chacun
    vect2d[1].resize(10);
    vect2d[2].resize(10);

    fill( vect2d[0].begin(), vect2d[0].end(), 10 );      //on remplis tout ca
    fill( vect2d[1].begin(), vect2d[1].end(), 20 );
    fill( vect2d[2].begin(), vect2d[2].end(), 30 );

    //ce que j utilise d'habitude pour les vecteur a une dimension
    for(iter=vect2d.begin(); iter!=vect2d.end(); iter++)
    {
        printf("%d\n", *iter);               // cout << *iter ne marche meme plus dans ce cas !
    }

    //affiche 3 nombre au hazard (pour 3 vecteur de vecteur !)

    Comment donc parcourir tout les elements de ce vecteur de vecteur ? j en ai besoin pour manipuler des vecteurs de vecteurs d'objet ou surement plus tard avec les listes !
merci
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Dernière intervention
3 juillet 2006
2 mai 2006 à 18:31
3
Merci
« *iter » pointe sur ton vecteur «  vector< int > » dans « vector<vector > vect2d »

#include
#include <vector>
using namespace std;

vector<vector > vect2d;
vector<vector >::const_iterator iter1; // pour parcourir « vect2d »
vector::const_iterator iter2; // pour parcourir chaque vecteur de « iter1 »

// ...

//
// vect2d[0] to vect2d[2]
//
for (iter1 = vect2d.begin(); iter1 != vect2d.end(); iter1++)
{
  //
  // *iter1 == vector
  //
  // (*iter1)[0] to (*iter1)[9]
  //
  for (iter2 = (*iter1).begin(); iter2 != (*iter1).end(); iter2++) {
    cout << (*iter2) << endl;
  }
}

-=-= ExCRT =-=-

Merci excrt 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de excrt
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
2 mai 2006 à 19:04
0
Merci
Merci pour ce coup de main !
j avais presque trouve de mon cote mais j ete en train de serieusement buter sur la ligne
*iter1 == vector je ne pense pas que j aurai trouve !
C'est une technique utilisé souvent ? je ne l ai pas trouve sur les sites de C++ !
merci en tt cas !
Commenter la réponse de Amanobuo
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
2 mai 2006 à 19:07
0
Merci
Au fait, un detail : on peut remplacer (*iter1).begin() par iter1->begin()
+
Commenter la réponse de Amanobuo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.