STL ajouter des éléments dans un vector

STL ajouter des éléments dans un vector - C++ - Programmation

Marsh Posté le 18-06-2006 à 14:04:51    

Bonjour !
Bon je viens juste depuis quelques jours de commencer a apprendre STL et là j'ai un petit soucis : je comprend pas comment on fait pour insérer un élément dans un endroit précis dans un Vector.
 
par exemple je fait ça :

Code :
  1. std::vector<int> vectInt;
  2. vectInt.push_back(10);
  3. vectInt.push_back(20);
  4. vectInt.push_back(30);


je voudrais rajouter 25 entre le 20 et le 30
je sais qu'il faut utiliser la méthode insert() mais j'ai un soucis avec les iterator...

Code :
  1. std::vector<int>::iterator itera = vectInt.end();


car ça, ça va me donner le dernier et donc si je fais  vectInt.insert(itera, 25); il va me le mettre a la fin...
mais on fait comment pour lui dire de le mettre en 3° place ???
 
Merci :)

Reply

Marsh Posté le 18-06-2006 à 14:04:51   

Reply

Marsh Posté le 18-06-2006 à 14:06:39    

utilises find pour trouver l'element que tu veux

Reply

Marsh Posté le 18-06-2006 à 14:09:06    

d'accord Merci je vais regarder :)

Reply

Marsh Posté le 18-06-2006 à 14:11:19    

ou mieux : tu utilises std::list qui comporte une méthode sort

Reply

Marsh Posté le 18-06-2006 à 14:17:19    

Ok merci mais pour le moment dans mon tutorial je suis pas encore arrivé a l'utilisation des list  :D  
mais je retient ta méthode :)

Reply

Marsh Posté le 18-06-2006 à 14:18:16    

Amonchakai a écrit :


mais on fait comment pour lui dire de le mettre en 3° place ???


En troisième place ?  
 

Code :
  1. assert( vec.size() > 2 ); // s'assurer que vec.begin() + 2 est un itérateur valide
  2. vec.insert( vec.begin() + 2, 25 );


 
A moins que tu ne veuilles dire en avant dernière place ?

Code :
  1. assert( ! vec.empty() ); // s'assurer que vec.begin() - 1 est un itérateur valide
  2. vec.insert( vec.end() - 1, 25 );


 
Si tu veux ranger des éléments triés, peut être qu'un std::set<> est plus approprié.


Message édité par ++fab le 18-06-2006 à 14:56:16
Reply

Marsh Posté le 18-06-2006 à 14:21:19    

KangOl a écrit :

ou mieux : tu utilises std::list qui comporte une méthode sort


elle a une fonction membre sort car elle ne peut pas utiliser std::sort -- qui requière aux itérateurs du conteneur, d'être à accès aléatoires.

Reply

Marsh Posté le 18-06-2006 à 14:22:23    

ha merci pour l'info :jap:

Reply

Marsh Posté le 18-06-2006 à 14:58:59    

Ok, Merci pour vos réponces !!!
 
c'est vrai que le coup du " vec.begin() + 2 " c'était ce que je voulais faire a la base... mais par contre le find() me parait très intéressant...
 
En tout cas Merci de votre aide !!!  (ha ha je vais pouvoir passer au cour suivant !!!)  :D

Reply

Sujets relatifs:

Leave a Replay

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