Entfernen
Eliminiert einen angegebenen Wert eines angegebenen Bereich, ohne die Reihenfolge der verbleibenden Elemente zu beeinträchtigen und das Ende eines neuen Bereichs zurückzugeben, der vom angegebenen Wert frei ist.
template<class ForwardIterator, class Type>
ForwardIterator remove(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
Parameter
_First
Ein Vorwärtsiterator, der die Position des ersten Elements im Bereich abweicht, von dem Elemente entfernt werden._Last
Ein Vorwärtsiterator, der die Position eine hinter dem letzten Element im Bereich abweicht, von dem Elemente entfernt werden._Val
Der Wert, der vom Bereich entfernt werden soll.
Rückgabewert
Ein Vorwärtsiterator, der die neue Endposition des geänderten Bereichs, eine hinter dem letzten Element der Restsequenz frei vom angegebenen Wert behandelt.
Hinweise
Der Bereich, der verweist, muss gültig sein; alle Zeiger müssen dereferenzierbar sein und in der Sequenz ist die letzte Position von der ersten durch Zunahme erreichbar.
Die Reihenfolge der Elemente, die nicht entfernt werden, bleibt stabil.
operator==, das verwendet wird, um die Gleichheit zwischen Elementen zu bestimmen, muss eine Äquivalenzrelation zwischen den Operanden verlangen.
Die Komplexität kann linear; Es gibt _Last (-) _First Vergleiche auf Gleichheit.
Die Liste-Klasse hat eine effizientere Memberfunktionsversion von remove, die auch Zeiger neu verknüpft.
Beispiel
// 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;
}
Beispielausgabe
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 ).
Anforderungen
Header: <algorithm>
Namespace: std