Vecteur: supprimer un élément

Vecteur: supprimer un élément - C++ - Programmation

Marsh Posté le 23-01-2005 à 10:06:56    

Bonjour,
 
Je début avec les vecteurs et je ne trouve pas la fonction qui permet de supprimer un élément du vector qui se trouve en X ième position.
 
Merci d'avance...


Message édité par casafa le 23-01-2005 à 10:07:08
Reply

Marsh Posté le 23-01-2005 à 10:06:56   

Reply

Marsh Posté le 23-01-2005 à 10:21:32    

tonvecteur.erase
 
http://www.codeproject.com/vcpp/stl/std_vector.asp
 
et meme :
 
Example
 

Code :
  1. // vector_erase.cpp
  2. // compile with: /EHsc
  3. #include <vector>
  4. #include <iostream>
  5. int main( )
  6. {
  7.    using namespace std; 
  8.    vector <int> v1;
  9.    vector <int>::iterator Iter;
  10.  
  11.    v1.push_back( 10 );
  12.    v1.push_back( 20 );
  13.    v1.push_back( 30 );
  14.    v1.push_back( 40 );
  15.    v1.push_back( 50 );
  16.    cout << "v1 =" ;
  17.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  18.       cout << " " << *Iter;
  19.    cout << endl;
  20.    v1.erase( v1.begin( ) );
  21.    cout << "v1 =";
  22.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  23.       cout << " " << *Iter;
  24.    cout << endl;
  25.    v1.erase( v1.begin( ) + 1, v1.begin( ) + 3 );
  26.    cout << "v1 =";
  27.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  28.       cout << " " << *Iter;
  29.    cout << endl;
  30. }


 
Output
 
v1 = 10 20 30 40 50
v1 = 20 30 40 50
v1 = 20 50
 
tiré de la msdn


Message édité par didier1809 le 23-01-2005 à 10:22:52

---------------
.
Reply

Marsh Posté le 23-01-2005 à 12:20:40    

didier1809 a écrit :


 
 

Code :
  1. #include <vector>
  2. #include <iostream>
  3. int main( )
  4. {
  5.    using namespace std; 
  6.    vector <int> v1;
  7.    vector <int>::iterator Iter;
  8.  
  9.    v1.push_back( 10 );
  10.    v1.push_back( 20 );
  11.    v1.push_back( 30 );
  12.    v1.push_back( 40 );
  13.    v1.push_back( 50 );
  14.    cout << "v1 =" ;
  15.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  16.       cout << " " << *Iter;
  17.    cout << endl;
  18.    v1.erase( v1.begin( ) );
  19.    cout << "v1 =";
  20.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  21.       cout << " " << *Iter;
  22.    cout << endl;
  23.    v1.erase( v1.begin( ) + 1, v1.begin( ) + 3 );
  24.    cout << "v1 =";
  25.    for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
  26.       cout << " " << *Iter;
  27.    cout << endl;
  28. }


 
tiré de la msdn


 
Faut juste etre conscient que supprimer un elément en Xieme position n'est pas une opération efficace pour vector (cf le commentaire explicite dans les sources de vector).  
 
pour un extrait de la msdn, ça me parait bien léger de déclarer non const l'itérateur :o  
idem pour la post-incrémentation de l'itérateur  :o  
et on peut faire plus concis et meilleur ...

Reply

Marsh Posté le 23-01-2005 à 16:31:37    

++fab a écrit :

Faut juste etre conscient que supprimer un elément en Xieme position n'est pas une opération efficace pour vector (cf le commentaire explicite dans les sources de vector).  
 
pour un extrait de la msdn, ça me parait bien léger de déclarer non const l'itérateur :o  
idem pour la post-incrémentation de l'itérateur  :o  
et on peut faire plus concis et meilleur ...


 
ca, miscosoft n'a peut etre pas envie de se casser le cu* pour ca  :D  
 
une liste serai splus adaptée amha  :o


---------------
.
Reply

Sujets relatifs:

Leave a Replay

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