Creer indefiniement ???

Résolu
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 - 8 juin 2005 à 17:00
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 - 10 juin 2005 à 14:56
Bonjour a tous,

Je me demandais si il n'y avais pas une methode permettant de creer
indefiniement des class ou struct comportant par exemple le parametre
'nick' et que l'on puisse ensuite rechercher la class ou struct
correspondant ?

La seule methode que j'utilise pour l'instant est un tableau, donc
ayant une capacité limité ... j'avais pensé a utiliser realloc, mais
j'ai eu plusieurs erreurs de compilation ...

Si quelqu'un avait une idee !

10 réponses

darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
9 juin 2005 à 13:19
euh.......



on prend les meme et on recommence, je corrige mon code :



#include
#include <list>
#include <string>
using namespace std;

struct log
{
string nick;
int id;
};

int main()
{
long int i = 0:
list<log*> log_list;
log* instant_log = NULL;
while(i < 1 000 000 000)
{
instant_log = new log;
instant_log.nick = "Frodon";
instant_log.id = i;
log_list.push_back(instant_log);
}

for(list<log*>::iterator it = log_list.begin() ; it != log_list.end() ; it++)
{
delete *it;
*it = NULL;
}
log_list.clear();
return(0);
}

La ca sera surement mieux
3
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
9 juin 2005 à 08:24
hmmm



Tu dois pouvoir faire :



#include <list>

using namespace std;



int main(void)

{

list<ma_classe> ma_liste;

ma_classe* mon_objet = NULL;

while(true)

{

mon_objet = new ma_classe;

ma_liste.push_back(*mon_objet);

}



return 0;



Ca créera des objets mon_objet indéfiniment tant qu'il restera de la mémoire allouable
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
9 juin 2005 à 08:30
euh... petite correction quand même, je me suis trompé

dans ce code je crée des objets ma_classe avec new, qui ne sont
pas libérés, ma_liste utilisantle constructeur par recopie



Ce sera surement mieux de faire



list<ma_classe*> ma_liste;

ma_classe* mon_objet = NULL;

while(true)

{

mon_objet = new ma_classe;

ma_liste.push_back(mon_objet);

}





Mets une condition qui s'arrete quand même pour le while, et n'oublie
pas de libérer l'espace memoire alloue pour chacun des objets a la fin.



Du style:

for(list<ma_classe*>::iterator it = ma_liste.begin() ; it != ma_liste.end() ; it++)

{

delete *it;

*it = NULL;

}



ma_liste.clear();
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
9 juin 2005 à 11:55
Hmm je crois comprendre mais t'aurais pas un tuto bien frais qui
explique toutes les possibilités de list plzz ? ou alors un code
complet et bien fait ? en tout cas je crois que c'est exactement ce
dont j'avais besoin ^^

merci !
0

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

Posez votre question
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
9 juin 2005 à 13:15
Faut d'abord que tu me precise ce que tu veux faire exactement parce
que sinon c'"est trop vague pour que je puisse te créer autre chose que
ce que je t'ai mis



Au cas ou, je te remets un main complet, avec un struct





#include
#include <list>
#include <string>
using namespace std;

struct log
{
string nick;
int id;
};

int main()
{
int i = 0:
list<log> log_list;
log* instant_log = NULL;
while(i < 1 000 000 000)
{
instant_log = new log;
instant_log.nick = "Frodon";
instant_log.id = i;
log_list.push_back(instant_log);
}
}


Quand a un totu de list, c'est la STL (entre autre, regarde list, vector, queue, set et map pour voir ce dont tu as besoin)

Un site d'explication simple sur les list et les vector:

http://www.msoe.edu/eecs/ce/courseinfo/stl/
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
9 juin 2005 à 13:16
hmmm, un petit return( 0 ); a la fin du main sera le bienvenu aussi, fais pas comme moi, ne l'oublie pas
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
10 juin 2005 à 09:29
Lol t'es sure de rien avoir oublié ?? Je peux donc accepter la reponse ??

En tout cas merci bcp, c'est ce que je cherchais !
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
10 juin 2005 à 09:30
juste une correction :

while(i < 1 000 000 000)
{
instant_log = new log;
instant_log.nick = "Frodon";
instant_log.id = i;
log_list.push_back(instant_log);
}
... boucle infinie, i ne bougeant pas ...
while(i < 1 000 000 000)
{
instant_log = new log;
instant_log.nick = "Frodon";
instant_log.id = i;
log_list.push_back(instant_log);
i++;
}
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
10 juin 2005 à 10:42
ouaip c vrai



Désolé, mais j'ai ai écrit ca a vitesse grand v, parce qu'il fallait
que je finisse un autre prog en urgence, donc c un peu barbare. mais
bon, en le relisant, mis a part ca, ca doit etre tout bon :)



Bye
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
10 juin 2005 à 14:56
C'est l'intention qui compte ^^
0
Rejoignez-nous