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