Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2685 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  vecteur de vecteur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

vecteur de vecteur

n°1077621
incapacita​nt
Posté le 10-05-2005 à 12:21:08  profilanswer
 

Bonjour,
 
Je n'arrive pas à imaginer la structure de Grammar dans cette definition :
 
typedef vector<string> Rule;
typedef vector<Rule> Rule_collection;
typedef map<string, Rule_collection> Grammar;
 
Que contient le vecteur Rule_collection ?
Comment le remplir, le lire ?
 
Merci

mood
Publicité
Posté le 10-05-2005 à 12:21:08  profilanswer
 

n°1077676
Taz
bisounours-codeur
Posté le 10-05-2005 à 12:55:17  profilanswer
 

t'as qu'à lire la doc de std::map

n°1077744
darknagash
Posté le 10-05-2005 à 13:40:29  profilanswer
 

Ben je vois pas le problème
 
Ton vecteur Rule_collection est une matrice (un vecteur de vecteur de String)
 
Si tu prefère c'est un tableau à 2 dimension où la première dimension symbolise les abscisses et pour chaque abscisse un tableau à 1 dimension de String lui est associé


---------------
C'est avoir tort qu'avoir raison avant les autres
n°1077969
incapacita​nt
Posté le 10-05-2005 à 15:48:03  profilanswer
 

ok, mais comment accéder aux éléments ? j'ai du mal a écrire un morceau de code qui utilise cette définition

n°1078111
le_courtoi​s
Posté le 10-05-2005 à 16:46:14  profilanswer
 

Bonjour,
 
 Excusez-moi de m'immiscer, je ne connais pas ton langage. Mais comme te l'a fait remarquer darknagash, tu as un vecteur de vecteur. Ton langage propose certainement un accesseur direct du style "vector-ref ton_vecteur la_position".  
 
  Donc pour acceder à l'élément Mij situé à la ième ligne et jième colonne d'un matrice M, tu peux faire:

Citation :

(vector-ref(vector-ref M ligne-i) colonne-j)
Edit: un petit schéma pour t'aider:
 #( #("un"  "deux"  "trois" )
    #("quatre" "cinq" "six" )
)


 
Le premier vector-ref sera tes lignes, le deuxième, tes colonnes.Voilà. Ou l'inverse  :D  
 Vu que tu avais l'air paumé, je me suis permis. Je ne sais pas si cela t'avancera, mais normalement çà devrait être bon.
Courage.


Message édité par le_courtois le 10-05-2005 à 16:57:22
n°1079977
le_courtoi​s
Posté le 11-05-2005 à 19:27:11  profilanswer
 

Salut,
 Au fait, ça t'a servi...ou bien?

n°1080107
incapacita​nt
Posté le 11-05-2005 à 20:55:45  profilanswer
 

ben non pas trop, je vois pas comment accéder avec les routines de le Standard Template Library

n°1080159
le_courtoi​s
Posté le 11-05-2005 à 21:35:00  profilanswer
 

Ben, désolé.
 Je pensais qu'en te disant le peu que je sais sur les vecteurs, ça allait t'aider. Sinon, tu n'as aucun accesseur/pointeur? directs pour les vecteurs dans ton langage? Je vais certainement dire une connerie mais peut-être qu'en voyant ça comme un tableau...?
 
  Après, je ne peux plus t'aider, franchement désolé. Bon courage.

n°1080432
IrmatDen
Posté le 12-05-2005 à 00:21:08  profilanswer
 

Salut,
 
Je me joins à Taz, pour le coup de la doc.
Mais cadeau :

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <map>
  5. using namespace std;
  6. typedef vector<string> Rule;
  7. typedef vector<Rule> Rule_collection;
  8. typedef map<string, Rule_collection> Grammar;
  9. int main(int argc, char **argv)
  10. {
  11. (void)argc;
  12. (void)argv;
  13. // Premiere collection de regle
  14. Rule premGroupe(2);
  15. premGroupe[0] = "Finit par er à l'infinitif";
  16. premGroupe[1] = "Finit par ai au passe simple, 1ere personne";
  17. Rule autreRegle(1);
  18. autreRegle[0] = "Je sais pas quoi mettre d'autre";
  19. Rule_collection collec(2);
  20. collec[0] = premGroupe;
  21. collec[1] = autreRegle;
  22. // Seconde collection de regle
  23. Rule secGroupe(2);
  24. secGroupe[0] = "Finit par ir à l'infinitif";
  25. secGroupe[1] = "Finit par issai au passe simple, 1ere personne";
  26. Rule_collection collec2(1);
  27. collec2[0] = secGroupe;
  28. // Creation de la grammaire
  29. Grammar gram;
  30. gram["tester"] = collec;
  31. gram["finir"] = collec2;
  32. // Affichage d'une grammaire
  33. Grammar::iterator gramIter = gram.begin();
  34. while( gramIter != gram.end() )
  35. {
  36.  cout << "Grammaire de \"" << (*gramIter).first << "\"" << endl;
  37.  Rule_collection::iterator colIter = (*gramIter).second.begin();
  38.  while( colIter != (*gramIter).second.end() )
  39.  {
  40.   cout << "Collection de regles" <<endl;
  41.   int i=0;
  42.   for( Rule::iterator ruleIter = (*colIter).begin();
  43.        ruleIter != (*colIter).end();
  44.        ++ruleIter, ++i )
  45.   {
  46.    cout << "Regle " << i << " : " << (*ruleIter) << endl;
  47.   }
  48.   ++colIter;
  49.  }
  50.  cout << endl;
  51.  ++gramIter;
  52. }
  53. cout << "Toutes les grammaires ont ete affichees" << endl;
  54. return 0;
  55. }


Si tu galères sur un truc, lis la doc et revient poser ta question...
 
PS: si j'ai faux, sur la grammaire, ne m'incendiez pas trop fort svp

n°1080501
incapacita​nt
Posté le 12-05-2005 à 08:48:28  profilanswer
 

merci, je devrais me debrouiller


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  vecteur de vecteur

 

Sujets relatifs
cast tableau/ vecteurSauver plusieurs éléments de ma requête SQL dans un vecteur [RESOLU]
echange de donner entre un vecteur et un intVecteur: supprimer un élément
[Java] Utilisation d'un vecteur d'objets[c++] vecteur de classes
normalisation d'un vecteur et epsilon value in raytracingvecteur en vba
Calcul de vecteur propre d'un matrice asymetriquereseau neurones - bitmap -> un vecteur de booleen
Plus de sujets relatifs à : vecteur de vecteur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR