suppression d'un élément dans un vector

suppression d'un élément dans un vector - C++ - Programmation

Marsh Posté le 04-01-2005 à 17:19:17    

Je fais :
 

Code :
  1. vector<int> vecteur;
  2. vector<int>::iterator start;
  3. /*je remplis mon tableau et je l'affiche*/
  4. start=vecteur.begin();
  5. vecteur.erase(start);


 
Ca compile mais ça plante au niveau de la dernière ligne. Qu'en pensez vous ?
 
J'utilise Devc++ sous WinXP.

Reply

Marsh Posté le 04-01-2005 à 17:19:17   

Reply

Marsh Posté le 04-01-2005 à 17:43:04    

for(vector<int>::iterator it =  vecteur.begin(); it != vecteur.end(); )  
  {
     it = vecteur.erase(it);
  }

Reply

Marsh Posté le 04-01-2005 à 17:47:22    

ca plante aussi ... vraiment je pige pas !

Reply

Marsh Posté le 04-01-2005 à 17:56:12    

et bien c'est normal, erase efface l'élément à la position donnée. S'il n'y a pas d'éléménts ... boom

Reply

Marsh Posté le 04-01-2005 à 17:57:45    

Bon, j'ai essayé avec la dernière version de gcc.
Pour moi, à partir du moment où vecteur contient au moins un élément, ce type d'écriture ne plante pas (ni à la compilation, ni à l'éxécution).
 
Evidemmment, si on reprend ton code tel quel (cad sans remplir vecteur), ça plante, ce qui est normal. En effet, dans un vector vide, les itérateur .begin() et .end() sont égaux et ne pointent vers rien. Il est alors normal que tu ne puisse supprimer un élément qui n'existe pas !

Reply

Marsh Posté le 04-01-2005 à 17:58:08    

effectivement faudrait voir le  
/*je remplis mon tableau et je l'affiche*/
;)

Reply

Marsh Posté le 04-01-2005 à 18:46:00    

ok ça marche, c'était bien les éléments qui ne se remplissaient pas merci !

Reply

Marsh Posté le 04-01-2005 à 18:52:12    

une autre question tant qu'on y ait histoire que j'ouvre pas un autre topic pour si peu. J'utilise string pour mes chaines de caractère mais existe t-il une commande spécifique pour une chaine de caractère contenant des espaces ?
 
merci !


Message édité par Arrgghh le 04-01-2005 à 18:52:31
Reply

Marsh Posté le 04-01-2005 à 19:00:36    

http://www.sgi.com/tech/stl/table_of_contents.html
est ton amis ;)
tu regardes basic_string!

Reply

Marsh Posté le 04-01-2005 à 19:54:09    

merci ! :)

Reply

Marsh Posté le 04-01-2005 à 19:54:09   

Reply

Marsh Posté le 05-01-2005 à 13:00:58    

en fait après étude du problème. Le string me prend bien les espaces. C'est quand je fais :
 
cin>>phrase;
 
il ne m'enregistre que le premier mot que je tape dans le terminal. Comment faire pour enregistrer une phrase dans un string avec un cin ?
 
Merci !


Message édité par Arrgghh le 05-01-2005 à 13:01:24
Reply

Marsh Posté le 05-01-2005 à 13:24:15    

essaie de mettre entre " "!

Reply

Marsh Posté le 05-01-2005 à 13:29:57    

non ça ne marche pas il met toujours le premier mot...

Reply

Marsh Posté le 05-01-2005 à 13:31:52    

std::getline(flux, chaine);

Reply

Marsh Posté le 05-01-2005 à 18:04:12    

Lam's a écrit :

std::getline(flux, chaine);


 
merci ca marche nickel ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed