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

  FORUM HardWare.fr
  Programmation

  remplir un vector avec un iterator

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

remplir un vector avec un iterator

n°27313
Bluetooth
Posté le 25-04-2001 à 10:39:52  profilanswer
 

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...

mood
Publicité
Posté le 25-04-2001 à 10:39:52  profilanswer
 

n°27331
verdoux
And I'm still waiting
Posté le 25-04-2001 à 10:58:34  profilanswer
 

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]

n°27344
Bluetooth
Posté le 25-04-2001 à 11:18:41  profilanswer
 

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 ;-)

n°27351
BENB
100% Lux.
Posté le 25-04-2001 à 11:29:11  profilanswer
 

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)...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  remplir un vector avec un iterator

 

Sujets relatifs
[aspx] et oui encore de l'aspx, comment remplir une datagrid avec ADOstring et vector
[C++] trier un vector avec une fonction de comparaisonRemplir une liste en live & direct
[C++] trier un vector 
Plus de sujets relatifs à : remplir un vector avec un iterator


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR