Accueil > Forum > > > > reproduction dans container STL
reproduction dans container STL
dimanche 13 mai 2007 à 02:02:22 |
reproduction dans container STL

istdasklar
|
BOnjour... avis au amateur, j'ai trop du mal a jouer avec les container de la STL!
Mon programme doit simuler la reproduction d'entité vivante.
L'entité vivante est un objet LIFE, ou live() renvoie le status : JE_VIS, JE_ME_REPLIQUE, JE_MEURT.
En
gros, il s'agit de mettre des Life dans un container, de tester les
Life du container dans une boucle, et d' enlever ou d'ajouter une copie
dans dans le container en fct du status.
Exemple avec un list!
Bon, bien sur ca marche pas!! Car je sais pas trop comment ca marche la liste! J'ai des segment faut et tout! Et sinon, c'est quoi le mieux pour ce que je fait : list ? vector ? deques? et
encore, comment je peux faire un parcours aleatoire de la liste? Car,
si je definit une population Maximum, je vais avoir des entités
vivantes avantagée.....Bref, bien compliqué tout ca!!
Bref, si on execute dans la boucle ça :
cout<<listLife.size()<<endl;
Je devrais avoir une suite exponentiel du type: 1,2,4,8,16,32 ....pMax
IDK
|
|
dimanche 13 mai 2007 à 10:04:00 |
Re : reproduction dans container STL

luhtor
|
La règle est simple: - Ne jamais manipuler et modifier les itérateurs dans une boucle for, sauf si tu en fais une copie (enfin c'est délicat) donc jamais ! :) Utilise une boucle while pour ca. - Dans le meme genre, jamais de fonction erase dans le boucle for. j'ai des doutes pour la fonction remove. list.push_back(&it); <= la j'ai du mal a voir ske tu fais.
list.push_back(*it); <= plutot.
Donc utilise une boucle while, en incrémentant toi meme l'itérateur et vérifie la définition de la fonction remove pour savoir ce qu'elle fait. L'itérateur en argument de la fonction, pointe apres sur l'élément suivant ou pas ? void remove(const T& val);
Removes all elements that compare equal to val. The relative order
of elements that are not removed is unchanged, and iterators to
elements that are not removed remain valid. This function is
linear time: it performs exactly size() comparisons for equality. Je suis pas sur que c'est ce que tu veux. C'est plutot ca a mon avis: | iterator erase(iterator pos) | Sequence |
Erases the element at position pos. |
Donc dans ta boucle while ca donnera: it = list.erase(*it); <= et la attention !! ne pas incrémenter l'itérateur it, car ca deja été fait avec la fonction erase Donc: while (it != list.end()) { // SI je supprime { it = list.erase(it); // it pointe apres la fonction sur l'élément suivant. } else // si j'ai pas besoin de supprimer { // Je fais mes trucs et j'incrémente it; it++; } }
|
|
dimanche 13 mai 2007 à 12:05:34 |
Re : reproduction dans container STL

istdasklar
|
Ok....desolé pour les erreurs, j'avais pas mon vrai code sur moi! J'ai donc réecris de tete!
Merci pour tes conseils precieux! Sinon, pour ajouter je dois modifier , pour que les elements que j'ajoute ne soit pas pris en compte dans la boucle en cours, mais dans la suivante. C'est bon ce qui suit?
listLife<LIFE>:: iterator it; listLife<LIFE>::iterator itEnd = listLife.end();
while ( tps <= tpsMax) { while ( it != itEnd) { if ( SE_REPLIQUER) // On ajoute, mais ne seront pas tester listLife.push_back(*it);
if ( SUPPRIMER) {it = listLife.erase(it); itEnd--;} //On supprime, donc la fin recule de 1 (La je suis pas sur) else it++; } itEnd = listLife.end(); // Fin du tour.... On prend en compte les derniers elements ajouté. } IDK
|
|
dimanche 13 mai 2007 à 12:26:29 |
Re : reproduction dans container STL

luhtor
|
"tEnd = listLife.end();" <= inutile car c'est testé" dans le while. La valeur du pointeur "listLife.end()" change quand tu ajoutes des éléments.
listLife<LIFE>:: iterator it = listLife.begin(); <= Attention à bien initialiser le pointeur.
while ( it != listLife.end()) { if ( SE_REPLIQUER) listLife.push_back(*it); <= On ajoute des éléments a la fin, donc listLife.end() change.
if ( SUPPRIMER) it = listLife.erase(it); <= si on supprime le dernier, alors erase renvoit listLife.End(), il faut donc surtout pas incrémenter le pointeur apres. else it++; }
|
|
dimanche 13 mai 2007 à 13:29:12 |
Re : reproduction dans container STL

istdasklar
|
"tEnd = listLife.end();" <= inutile car c'est testé" dans le while.
La valeur du pointeur "listLife.end()" change quand tu ajoutes des
éléments.
Bein, justement! Je veux pas! Si j'ajoute un element, qui est testé dans la meme boucle, celui ci, va se repliquer aussi, et ajouter un element et ainsi de suite... Je ne sortirai pas de la boucle! IDK
|
|
dimanche 13 mai 2007 à 13:29:17 |
Re : reproduction dans container STL

istdasklar
|
"tEnd = listLife.end();" <= inutile car c'est testé" dans le while.
La valeur du pointeur "listLife.end()" change quand tu ajoutes des
éléments.
Bein, justement! Je veux pas! Si j'ajoute un element, qui est testé dans la meme boucle, celui ci, va se repliquer aussi, et ajouter un element et ainsi de suite... Je ne sortirai pas de la boucle! IDK
|
|
dimanche 13 mai 2007 à 13:38:48 |
Re : reproduction dans container STL

luhtor
|
Réponse acceptée !
Ah ok, mais ya pas besoin de faire itEnd--; car itEnd change pas, si tu supprimes un élément, c'est pas un tableau que tu utilises mais une liste. itEnd reste le meme peu importe ce qu'il se passe pour les éléments précédents.
"//On supprime, donc la fin recule de 1 (La je suis pas sur) " <= La fin ne recule pas.
|
|
Cette discussion est classée dans : status, list, container, it, life
Répondre à ce message
Sujets en rapport avec ce message
Comment afficher la liste des fichiers dans le composant List View [ par kanimana ]
Bonjour Svp, indiquez moi la fonction qui permettera d'afficher les fichier contenu dans un répertoire dans le composant ListView, avec les détails
liste contenant un objet d'une de mes classes [ par Eric ]
Salut,Je voudrais créer une liste contenant comme objet une de mes classes..par exemplelist ma_Liste_de_ma_Classe;mais je ne sais pas comment m'y pre
mailing list [ par dragon ]
c'est pas vraiment un appel a l'aide, mais c'était la section du forum qui me paressait la plus appropriéje suis codeur pour le mod StarCraft Tatal Co
police et ListBox [ par JeriKo ]
salut à tousça fait 2 heures que j'essaye de changer la police de ma listbox, y a rien à faire ça veut pas :(alors j'ai fait comme çaCListBox *list
half life modification [ par baratrix ]
salut,je suis un gros debutant en programmation (j'ai lu quelques lignes de pascal il y a une dizaine d'annee,mais c'est tout ) Mon boulot c'est plut
list control [ par soshell ]
Bonjour!J'ai un projet à finir dans 2 jours ( je sais c pas malin...) et j'ai commencé la prog windows hier, c pour ca ke j'ose mettre ce post dans au
Appel au pros du Malloc [erreur etrange] [ par Manson ]
Bonjour,j'aimerai lister le contenu d'un repertoire dans un tableau de char. Mon pb, c'est que lorsque je le fais, j'ai mon tableau qui ne se rempli p
faire fonctionner une list box [ par lolman27 ]
c tout con ms jarive pas a faire fonctionner une list box jarive pa a utiliser la fonction sendmessage quelqun pourrai me faire un code pour exemple s
pb list box en VC++ [ par owel ]
salut !!je voudrai faire un truc simple affiché le contenu d'un repertoire dans une list box mais je n'y arrive pas !la lecture du fichié pas de pb !m
Erreur Template [ par yodasoft ]
Bonjour , je suis nouveau sur ce site:J'ai une erreur sous Visual C++Il me met l'erreur suivante :guichet.obj : error LNK2001: unresolved external sym
Livres en rapport
|
Derniers Blogs
MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Hero
Entre 550€ et 550€
|