Partager via


supprimer

Supprime une valeur spécifiée d'une plage donnée sans toucher à l'ordre des éléments restants et retourner la fin d'une nouvelle plage exempte de la valeur spécifiée.

template<class ForwardIterator, class Type>
   ForwardIterator remove(
      ForwardIterator _First, 
      ForwardIterator _Last, 
      const Type& _Val
   );

Paramètres

  • _First
    Un itérateur vers l'avant adressant la position du premier élément dans la plage à partir duquel les éléments sont supprimés.

  • _Last
    Un itérateur vers l'avant adressant une position au delà de le dernier élément dans la plage à partir duquel les éléments sont supprimés.

  • _Val
    La valeur qui doit être supprimée de la plage.

Valeur de retour

Un itérateur vers l'avant adressant la nouvelle position de fin de la plage modifié, une au delà de le dernier élément de la séquence de reste exempte de la valeur spécifiée.

Notes

l'intervalle référencé doit être valide ; tous les pointeurs doivent être deréférençables et dans la séquence la dernière position est accessible dès le début par l'augmentation.

L'ordre des éléments non supprimés reste stable.

operator== utilisé pour déterminer l'égalité entre les éléments doit appliquer une relation d'équivalence entre ses opérandes.

La complexité est linéaire ; il existe_Last (–) _Firstles comparaisons d'égalité.

La classe de liste a une version plus efficace de fonction membre de remove, qui reconnecte également des pointeurs.

Exemple

// alg_remove.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>

int main( ) {
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1, Iter2, new_end;

   int i;
   for ( i = 0 ; i <= 9 ; i++ )
      v1.push_back( i );

   int ii;
   for ( ii = 0 ; ii <= 3 ; ii++ )
      v1.push_back( 7 );
   
   random_shuffle ( v1.begin( ), v1.end( ) );
   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Remove elements with a value of 7
   new_end = remove ( v1.begin( ), v1.end( ), 7 );

   cout << "Vector v1 with value 7 removed is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // To change the sequence size, use erase
   v1.erase (new_end, v1.end( ) );

   cout << "Vector v1 resized with value 7 removed is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;
}

Résultat de l'exemple

Vector v1 is ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v1 with value 7 removed is ( 1 9 2 0 3 4 6 8 5 6 8 5 7 7 ).
Vector v1 resized with value 7 removed is ( 1 9 2 0 3 4 6 8 5 ).

Configuration requise

en-tête : <algorithm>

l'espace de noms : DST

Voir aussi

Référence

remove (STL Samples)

Modèles Standard