quitar
Elimina un valor especificado de un intervalo determinado sin perturbar el orden de los elementos restantes y devolver el final de un nuevo intervalo libre value especificado.
template<class ForwardIterator, class Type>
ForwardIterator remove(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
Parámetros
_First
Un iterador hacia delante que dirige la posición del primer elemento del intervalo de donde se están quitando los elementos._Last
Un iterador hacia delante que dirige la posición una más allá del último elemento en el intervalo de donde se están quitando los elementos._Val
El valor que debe quitarse del intervalo.
Valor devuelto
Un iterador hacia delante que dirige la nueva posición final del intervalo modificado, una más allá del último elemento de la secuencia el remanente libre value especificado.
Comentarios
El intervalo hace referencia debe ser válido; todos los punteros deben ser dereferenceable y dentro de la secuencia la posición última es accesible de primera por el aumento.
El orden de los elementos no colocados permanece estable.
operator== utilizado para determinar la igualdad entre los elementos debe imponer una relación de equivalencia entre sus operandos.
la complejidad es lineal; hay (_Last – _First) comparaciones de igualdad.
La clase de lista tiene una versión más eficaz de funciones miembro de quite, que también vuelve a vincular punteros.
Ejemplo
// 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;
}
Resultados del ejemplo
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 ).
Requisitos
encabezado: <algoritmo>
espacio de nombres: std