Problème d'itérateur sur une structure

Potchi Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 août 2004 - 26 août 2004 à 14:13
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 27 août 2004 à 20:12
Bonjour,

Petit problème de débutant :

J'ai une structure style

typedef struct Distrib_Annuelle
{
int Année ;
int Compteur ;
}

J'ai déclaré une liste : list<Distrib_Annuelle> L1;
et un itérateur : list<Distrib_Annuelle>::iterator courant;

maintenant je voudrai effectuer une recherche portant sur le champ 'Année' avec la l'algo find() de la librairie STL ...

courant = find(L1.begin(),L1.end(),??? et là ????);

Y aurait-il kelk'un pour m'éclairer pleazz........

Merci >>>

78 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 16:48
explicite stp

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 16:49
les macros c'etait bon a l'epoque du c ansi ou inline n'existe pas

en c++ il est clair qu'il vaut mieux preferer une fonction inline rien que pour les controles statiques, surtout que coté optimisation c'est plus poussé car le code produit est plus coherent
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 16:50
moi non plus j'ai pas compris
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 16:52
djl

faux:
va spécifier un type ds un param de fonction (sans faire de template....)

et pi qd tu as des trucs se répétant....

exemple
#define ALLOUEn(ptr,type,nb) do{\
if ((ptr = ((type *)malloc((size_t)((nb)*sizeof(type)))) )== NULL) \
PB2("PAS ASSEZ DE MEMOIRE - Erreur allocation dynamique\n \t _ALLOUEn(ptr,type,nb)",-50);}while(0)

Magic Nono: l'informagicien! 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 16:56
magic_Nono > "en c++ il est clair qu'il vaut mieux preferer une fonction..."

ou tu vois de l'imperatif la dedans ;) et moi je prefere un code securisée plutot qu'uin truc qui plante en fonction de son utilisation
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
27 août 2004 à 16:57
bah tt simplement kan je fais une classe generique, et ke je fais mes protos ds le .h, je met mes corps ds le hpp, et je vais pas me faire chier a taper template <typename truc> et encore moins template <typename truc> inline avant chaque fonction, dc je me retrouve avec 2 macros et je membrouille, dc vu ke tt est inline, plus de pbs....
0
Potchi Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 août 2004
27 août 2004 à 17:01
Hmm... euh ... désolé d'vous déranger mais ça marche presque

ya juste ça ki plante :

X=integer et location c'est l'itérateur....;

while (location->Year != X)
++location;

pourtant, ça compile ...

(après j'vous fait plus chier, promis...)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 17:03
ta pas un simple exemple?
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 17:12
le prov> k

pot >
verifie si T po a la fin de ta liste....

Magic Nono: l'informagicien! 8-)
0
Potchi Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 août 2004
27 août 2004 à 17:12
X c'est une année , et je cherche à savoir si elle est dans la chaine...
et je voudrai ke l'itérateur s'arrête soit si C la fin de la chaine, soit si l'année est dansla chaine... C tout bête mais plante !!

while ((location != L1.end()))
++location; // ça marche

et

while ((location != L1.end()) || (location->Année != X))
++location; // ça marche plus !

j'imagine ke ça vient de ça : (location->Année != X) non ??
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 17:14
djl=> js eu de pb avec les macros... suffit de suivre certaines regles

leprov=> voilà ce que je faisais avec les template

(depuis, G fait du copié collé pr etre reconnu par MP)

ceci dit, ça change rien a la compil ou l'exec!

#define TEMPLAT1 template<class TYPE_ELTS> BListeIndir<TYPE_ELTS>
#define TEMPLAT(retour) template<class TYPE_ELTS> retour BListeIndir<TYPE_ELTS>

Magic Nono: l'informagicien! 8-)
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
27 août 2004 à 17:18
remplace || par &&.......
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 17:18
Potchi >

while ( location != L1.end() && location->Année != X)
++location;

magic_Nono > oui, comme les do{ ... }while(0) :D
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
27 août 2004 à 17:20
la tu as dis je continue tant que location != L1.end() ou location->année != x, autrement dit tu tarrete si location == end() et location->annee == x.....normal que ca plante, ca veut dire que tu tarrete a la fin si le dernier element est x.....
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 17:23
lol tu ve controler si une chaine est ds une autre

=> controle la fin de chaine

2e inspire toi donc de BString::checkIn

(y en a qui vont etre content)

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 17:23
while ( !(location != L1.end() && location->Année == X) )
++location;

coimme ca c'est bon ?
0
Potchi Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 août 2004
27 août 2004 à 17:23
AARRggghhhhh.............. TROP CON !!!

j'me flagèlerai à gros coups d'ortils fraîches ce soir , promis !!!!

en attendant, encore merci à vous tous ; )
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 août 2004 à 17:24
magic_Nono > liste chainée
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 17:25
C douloureux

une courone d'épine C mie, en plus ça donne des ref...

alors le prov & djl

L vs plaisent po mes macros?

Magic Nono: l'informagicien! 8-)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 17:26
djl> that's right
0
Rejoignez-nous