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

  FORUM HardWare.fr
  Programmation

  [C++] liste liee --> HELP!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] liste liee --> HELP!!

n°84406
Slash-
Posté le 26-12-2001 à 17:48:45  profilanswer
 

Salut
 
y aurait il une bonne ame qui saurait m'expliquer comment faire une liste liee en c++
 
par exemple voici une classe :
 
class xyz
{
     private : ...
     public : ...
}
 
et je voudrais que tout mes objets instanciant la classe xyz soit dans une liste liée (comme en c quoi) ou alors dans un vecteur dynamique
 
ca fait 1 semaine que je cherche et je trouve toujours pas :(
 
merci

mood
Publicité
Posté le 26-12-2001 à 17:48:45  profilanswer
 

n°84413
tgrx
My heart is pumping for love
Posté le 26-12-2001 à 18:22:15  profilanswer
 

#include <list> :D
 
De l'intérêt de la STL... :sweat:

 

[edtdd]--Message édité par tgrx--[/edtdd]

n°84417
Slash-
Posté le 26-12-2001 à 18:33:51  profilanswer
 

merci mais ca m'avance pas beaucoup ca, quelques explications seraient les bienvenues...

n°84425
LetoII
Le dormeur doit se réveiller
Posté le 26-12-2001 à 19:45:32  profilanswer
 

Je peux te répondre pour le vecteur dynamique (pas la doc pour le reste sous les yeux :) )
 
#include <vector>
 
using namespace std
 
typedef vector<xyz> XYZVector;
typedef XYZVector::iterator XYZIt;
 
alors ces quelques lignes de codes instencient le template vector pour qu'il utilise ta classe xyz, le vector est tout simplement un tableau d'objets dont la taille est modifiée de façon dynamique est optimale (enfin ça ça dépend de l'implémentation de la STL :) )
 
tu accédes aux éléments dans la tableau grâce à un iterator, par exemple:
 
xyz       o1,o2,o3;
XYZVector vecteur;
XYZIt     i;
 
vecteur.push_back(o1);
vecteur.push_back(o2);
vecteur.push_back(o3);
 
i=vecteur.begin();
i->methodexyz();
 
pour plus de détails cherche toi une doc sur la STL

 

[edtdd]--Message édité par LetoII--[/edtdd]

n°84468
Slash-
Posté le 27-12-2001 à 09:58:23  profilanswer
 

merci pour ta reponse qui est beaucoup plus explicite, je crois que je devrai m'en sortir avec ca :)

n°84488
Slash-
Posté le 27-12-2001 à 12:12:07  profilanswer
 

salut,
 
finalement j'ai decide de prendre une liste liée, c'est +/- pareil que le vecteur pour les instructions donc j'ai su m'y retrouver, mais par contre visual c++ me donne que je ne sais pas corriger, pouvez vous m'aider svp ?
 
merci
 
voici mon main :  
 
using namespace std;
 
typedef list<appareil> AppareilList;
typedef AppareilList::iterator AppareilIt;
 
void main(void)
{
 appareil a(1,"Appareil","Blablabla" ),b(2,"Appa2","test" ),c(3,"App3","test3" ),d;
 AppareilList list;
 AppareilIt i;
 ostream_iterator<appareil> sortie(cout, " " );
 
 list.push_front(a);
 list.push_front(b);
 list.push_front(c);
 
 copy(list.begin(),list.end(),sortie);
}
 
et en fait vc++ me donne une erreur pour la ligne ostream_iterator<appareil> sortie(cout, " " );
 
error C2664: '__thiscall std::ostream_iterator<class appareil,char,struct std::char_traits<char> >::std::ostream_iterator<class appareil,char,struct std::char_traits<char> >(class st
d::basic_ostream<char,struct std::char_traits<char> > &,const char *)' : cannot convert parameter 1 from 'class ostream_withassign' to 'class std::basic_ostream<char,struct std::char_traits<char> > &'
        A reference that is not to 'const' cannot be bound to a non-lvalue

n°84500
Slash-
Posté le 27-12-2001 à 12:46:25  profilanswer
 

en fait, je veux juste affiche ma liste, comment faire ?

n°84516
LeGreg
Posté le 27-12-2001 à 13:47:17  profilanswer
 

Code :
  1. list<appareil>::iterator i;
  2. for (i=maliste.begin(); i != malist.end(); ++i) {
  3.     cout << *i << endl;
  4. };


ca marche pas ca?
de plus ta liste tu gagnerais a la transformer
en vector. C'est transparent au niveau
du code mais tu y gagnes au niveau performance
si tu te contentes d'ajouter des elements
a la fin.

Code :
  1. using namespace std;
  2. typedef vector<appareil> AppareilList;
  3. typedef AppareilList::iterator AppareilIt;
  4. int main(void) {
  5.   appareil a(1,"Appareil","Blablabla" ),b(2,"Appa2","test" ),c(3,"App3","test3" ),d;
  6.   AppareilList maliste;
  7.   AppareilIt i;
  8.   maliste.push_back(c);
  9.   maliste.push_back(b);
  10.   maliste.push_back(a);
  11.   for (i=maliste.begin(); i != maliste.end(); ++i) {
  12.     cout << *i << endl;
  13.   };
  14.   return 0;
  15. }


 
il faut egalement eviter d'appeler ta liste
list qui est un nom deja utilise.
et main retourne toujours une valeur (entiere).
 
pour que ca marche il faut evidemment avoir
defini l'operateur << sur un objet de type appareil.
 
LEGREG

n°84574
Slash-
Posté le 27-12-2001 à 16:58:59  profilanswer
 

ok merci bcp
 
je vais quand meme faire ca avec une liste car je vais devoir supprimer ou ajouter un peu partout et pas seulement a la fin, et trier aussi, donc je pense qu'une liste est meilleur qu'un vecteur
 
a+


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

  [C++] liste liee --> HELP!!

 

Sujets relatifs
[Cryptographie][MD5]Help !!!Avis aux pro de la feuille de style .css..... HELP !!!
[Java script] Liste de checkbox[Help] Acquis de conscience en c++ ?
[HELP] [DOS] Tester qu'une partition existante est formatée[C] liste chainées de l'aide pitier lol
comment faire les 3 action?????????????helpSQL et liste des tables
[c] liste chaineesSOFT MULTIFONCTIONS POUR UNE DIVX BOX => Please Help
Plus de sujets relatifs à : [C++] liste liee --> HELP!!


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