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

 


Dernière réponse
Sujet : remplir un vector avec un iterator
BENB

Bluetooth a écrit a écrit :

 
 
je pouvais pas faire new...car c'est une struct et pas une classe (enfin pour ce que j'en sais...)
 
Mais avec push_back et une petite modif, ca marche bien !
Je te remercie ;-)




struct et class c'est fonctionnellement le meme chose meme si semantiquement c'est different...
donc tu peux faire,
S intermediaire
intermediaire.X=...
intermediaire.Y=...
new S(intermediaire)...


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
BENB

Bluetooth a écrit a écrit :

 
 
je pouvais pas faire new...car c'est une struct et pas une classe (enfin pour ce que j'en sais...)
 
Mais avec push_back et une petite modif, ca marche bien !
Je te remercie ;-)




struct et class c'est fonctionnellement le meme chose meme si semantiquement c'est different...
donc tu peux faire,
S intermediaire
intermediaire.X=...
intermediaire.Y=...
new S(intermediaire)...

Bluetooth

Verdoux a écrit a écrit :

 
 
Pour remplir ton vecteur, utilise plutôt v.push_back  
 
 




 
je pouvais pas faire new...car c'est une struct et pas une classe (enfin pour ce que j'en sais...)
 
Mais avec push_back et une petite modif, ca marche bien !
Je te remercie ;-)

verdoux Ben c'est pas du tout ça.
Déjà ton itérateur est pas inititalisé.
Et puis tu delete les pointeurs que tu mets dans ton vecteur !
 
Pour remplir ton vecteur, utilise plutôt v.push_back(new S(si,sj)) (si S a un constructeur du type: S(int _x=0, int _y=0):X(_x),Y(_y){} )
 
Et pour désallouer la mémoire, tu pourras faire:
vector<S*>::reverse_iterator it = v.rbegin();
for(;it != v.rend(); ++it)  delete(*it);  
v.clear();

 

[edit]--Message édité par Verdoux--[/edit]

Bluetooth je veux remplir un vector "v" de pointeur de structure "S" (toute conne : {int X,int Y}. Ce qui suit compile, MAIS fait un segmentation fault a partir du 2eme 'insert'...
 
//------------------------------------------------
v.reserve(10);
 
vector<S*>::iterator i;  
i = v.begin();
 
 
while (File1>>si>>sj) // lit des int 2 a 2 (ca ca marche...)
{
 S* tmp=new S;
 tmp->X=si; tmp->Y=sj;
 v.insert(i++,tmp); //segmentation fault des que i=1...
 delete(tmp);  
 
}
 
//------------------------------
 
 
et ca m'enerve !! :-)
Je precise que je debute en C++, et donc que la solution doit etre tt conne aussi. Si qlqun pouvait m'aider...

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)