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 :

Question bête sur les conteneurs


Sujet :

C++

  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut Question bête sur les conteneurs
    Je voudrais creer une matrice d'entiers disons...

    Je procede donc comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <vector>
    #include <iterator>
    using namespace std;
    typedef vector<int> ligne;
    typedef vector<ligne> matrice;
     
    matrice m;
    -Comment donner à ma matrice un ordre disons m[ordre][ordre]???
    -Comment puis-je acceder au [i][j] eme elment???

  2. #2
    mat.M
    Invité(e)
    Par défaut
    C'est plus du ressort du forum C++ que VC++

    Une manière un peu "lourde" serait la suivante :

    [quote]
    int i;
    ligne l0;
    i=10;
    ligne.puh_back(i);
    matrice.puh_back(ligne);

    // accession
    l0=matrice[0];
    i=l0[0];

    L'accession se fait avec [] élément n avec std::vector


    Comment donner à ma matrice un ordre disons m[ordre][ordre]???
    Avec le constructeur de vector<ligne>matrice.
    Voir la doc STL ou les tutoriels
    http://www.sgi.com/tech/stl/Vector.html

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    déplacé.

    merci de s'assurer de poster dans le bon forum à l'avenir.

  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
    Les vector de vector ne sont pas ce qu'il y a de plus intutif à utiliser pour manipuler des matrices.

    Pour les tableaux multidimensionnels il y a boost::multi_array par exemple ; pour les matrices mathématiques voir du côté de la MTL, boost::uBlas, ...

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    je trouve rien sur boost::multi_array???
    j'ai pas envi de telecharger GENIAL (la biblio) pour une matrice d'entier...
    Vous faites comment d'habitude quand vous avez besoin d'une matrice d'entier???

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635

  7. #7
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Par défaut
    Ou alors le truc très basique :

  8. #8
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Tipoun
    Ou alors le truc très basique :
    Oui mais figé et moins puissant que:

  9. #9
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Par défaut
    Oui mais figé et moins puissant que:
    Je n'ai pas dit le contraire ! Mais si c'est juste une petite matrice ou alors qu'on peut savoir à l'avance ces dimensions, il n'y a aucune raison de ne pas s'en servir !

    PS : attention à vector<vector<int>> il faut séparé les >> sinon c'est considéré par le compilateur comme l'opérateur d'extraction !
    J'ai lut dans un magazine que pour la prochaine norme ce "bug" sera corrigé

  10. #10
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    dsl tipoun il me faut un truc dynamique

  11. #11
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     PS : attention à vector<vector<int>> il faut séparé les >> sinon c'est considéré par le compilateur comme l'opérateur d'extraction !
    Au temps pour moi; mais les "bons" compilos le signalent et proposent de rajouter un espace.

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    dsl tipoun il me faut un truc dynamique
    Dans ce cas:
    et on peut faire:

  13. #13
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    c'est une librerie alors??? ok ok ok g compris... j'ai telechargé GENIAL puisque c dja sur devellopez.com mais j'ai ptit souci... Bon je crée un nouveau post merci tt le monde !!!

    -----------------ce message a été edité-----------------------------
    autant pour moi GENIAL n'est pas portable sur vc++ 6.
    SERIOUISME continu tu m'interesses lol je ne comprenais pas pk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vector<vector<int>>
    ne marchait pas!!!
    tu pourrais me donner un code pour :
    1) donner un ordre à ma matrice genre m[ordre][ordre]
    2) acceder a l'element m[i][j]
    stp et merci d'avance

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    resize() et ensuite pour accéder, ben [i][j]

  15. #15
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    1) donner un ordre à ma matrice genre m[ordre][ordre]
    Il me semble que ce n'est pas nécessaire, le formatage est automatique au fur et à mesure des ajouts de données, cependant il vaut mieux prévoir la bonne taille dés le début pour éviter les ralentissements dus à ces opérations même si elles sont faites de manière optimisée: à chaque ajout l'extension n'est pas de une mais plusieures cases je crois.

    2) acceder a l'element m[i][j]
    Comme pour un tableau classique.

    Pas mal d'infos ici:
    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

    Pour une matrice 10x10:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    vector<vector<int> > matrice;
    matrice.resize(10);
    vector<vector<int> >::iterator it;
    for(it=matrice.begin();it!=matrice.end();it++){
                                             it->resize(10);
                                             }

  16. #16
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    je pense que la boucle d'initialisation est pas tres orthodoxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(it=matrice.begin();it!=matrice.end();it++)
                   it->resize(10);
    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(it=matrice.begin();it!=matrice.end();++it)
                   it->resize(10);
    je pensais que c ça ki clochais mais non

  17. #17
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    et pis y'a des trucs que je comprends pas...
    Soit le code suivant:
    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
    17
    18
    19
    20
    #include <iostream>
    #include <vector>
    #include <iterator>
    using namespace std;
     
    void main() {
    vector<vector<int> > visited;
     
    visited.resize (10);//visited est un vecteur de vecteurs par
                          //consequent j'imagine que cette instruction ne fais que
                          //donner UNE seule dimmention à ma matrice
    
    for(vector<vector<int> >::iterator it=visited.begin();it!=visited.end();it++)
      it->resize(0);    //pareil pour l'iterateur
     
    for(int i=0;i<10;i++)
     for(int j=0;j<10;j++)
      cout<<visited[i][j]<<"\n";
    }
    tapez le code chez vous et regarder le resultat

    ma question clairement est : comment remplir l'emlement visited[i][j] ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(vector<vector<int> >::iterator iti=visited.begin();iti!=visited.end();iti++)
     for(vector<int>::iterator itj=iti->begin();itj!=iti->end();itj++) 
      iti->at (itj)=0;
    HELP???

  18. #18
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    C'est pas plutôt:
    ?

  19. #19
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    tapez le code chez vous et regarder le resultat
    C'est normal il ne fait que lire des cases mémoires invalides.
    De plus main retourne int.

  20. #20
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    c'est bon les gars j'ai trouvé plus fastoche
    et merci tt le monde

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Question bête sur les ancres
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/01/2008, 14h28
  2. question bête sur les binaires
    Par ben_skywalker dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 11h29
  3. [VB6]Question bête sur les paramètres optionels
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/10/2005, 20h33
  4. [MFC] Question bête sur les CListBox
    Par gwendo dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2005, 16h43
  5. question générale sur les conteneurs
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2004, 10h11

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