STL list [C++] - C++ - Programmation
Marsh Posté le 12-12-2004 à 01:23:30
J'ai du construire une classe Tableau qui est un tableau dynamique. Il s'agrandit au besoin et tout le tralala.
Là je fais une classe Hachage, qui implante un tableau d'adressage dispersé via un tableau dynamique dont chaque élément est une liste, ceci dans le but de gérer les collisions.
Dans ma classe Hachage, j'ai donc:
Code :
|
je veux me créer un itérateur pour parcourir ma liste, et trouver l'élément recherché
dans mon cas, je me sers de ma classe Hachage à l'aide d'objet Enveloppe. Une enveloppe est un objet qui contient une clé et une valeur.
en parcourant ma liste, je rechercherais donc une enveloppe qui a la même clé que "t", un objet de type Enveloppe lui aussi, qui contient une enveloppe avec une clé mais sans valeur attribué
Marsh Posté le 12-12-2004 à 02:38:50
j'en ai marre de faire des sujets que personne ne lit ...
Marsh Posté le 12-12-2004 à 02:44:21
Taz a écrit : j'en ai marre de faire des sujets que personne ne lit ... |
si fallait que chacun dise ce dont il a marre de toi...
j'avais fait ma recherche sur "list"
là jviens de déterrer ton vieux topic sur les typename, jvois pas vraiment quel est le lien avec mon problème de list
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
Marsh Posté le 12-12-2004 à 02:57:23
je pense que taz te propose un:
Code :
|
Marsh Posté le 12-12-2004 à 03:01:40
bjone a écrit : je pense que taz te propose un:
|
ahh bien voila, ca compile
bon maintenant cherchons à comprendre
en quoi est-ce différent? je comprends ce que le typedef fait, mais jvois pas en quoi c'est différent d'utiliser le tout par à l'aide d'un typedef ou de le faire directement dans ma méthode
le topic a taz a bien des exemples mais pas vraiment d'explication sur le "pourquoi" utiliser le typedef
Marsh Posté le 12-12-2004 à 03:03:46
c'est le typename qui permet de dire au compilo "plus tard on aura besoin de ça, même si ça existe pas encore"
enfin je comprends l'ensemble typedef/typename comme ça. (définition d'un type à partir d'un type encore non défini)
Marsh Posté le 12-12-2004 à 03:08:50
bjone a écrit : c'est le typename qui permet de dire au compilo "plus tard on aura besoin de ça, même si ça existe pas encore" |
mais encore? pk est-ce que la déclaration de mon itérateur dans la méthode ne peut fonctionner?
Marsh Posté le 12-12-2004 à 03:13:46
passque il doit y avoir une limite de "cascade" ou "dépendance" (ou je sais pas comment dire) au niveau de l'analyse de la template, ce qui implique que list<TYPE> passe mais list<TYPE>::quelque_chose ne passera pas.
je n'ai pas étudié la compilation de template, mais je suppose que le compilo la maintiens d'une certaine manière qu'il doit être capable de pseudo-résoudre les dépendances, et le typename sert à cette pseudo-résolution, en disant "oué là y'a un truc qui existera plus tard".
Marsh Posté le 13-12-2004 à 12:46:08
Bonjour,
j'ai posté récemment des questions sur ce forum au sujet des difficultés que j'avais à utiliser STL avec la version 6.0 de Visual C++. Je n'avais pas ces problèmes avec gcc sous linux, et, d'après ce que j'ai su par la suite, ces problèmes ne se recontraient pas avec la version 7.0 de Visual.
Pour mon information, peut tu me dire, Burgergold, quel type de compilateur tu utilises ?
Marsh Posté le 13-12-2004 à 13:13:45
Ah, OK, autant pour moi !
Ton problème ne devait donc pas être lié, comme pour moi, au type de compilateur !
Merci de ta réponse.
Marsh Posté le 12-12-2004 à 01:08:13
je cherche à faire un truc tout simple
j'ai une classe représenté par un Tableau de list de TYPE
Tableau< list<TYPE> > tab;
lorsque j'essaye de me créer un itérateur de list
list<TYPE>::iterator iter;
ca merde royalement, avec ce genre d'erreur
error: dependent-name ` std::list<TYPE,std::allocator<_CharT> >::iterator' is parsed as a non-type, but instantiation yields a type
note: say `typename std::list<TYPE,std::allocator<_CharT> >::iterator' if a type is meant
pourtant si je remplace TYPE par int dans la création de l'itérateur, ca fonctionne, alors je me dis qu'il doit manquer quelque chose dans ma classe TYPE (classe Enveloppe en réalité) pour pouvoir me créer mon itérateur