remove_copy
Copia los elementos de un intervalo de origen a un rango de destino, excepto en que los elementos del valor especificado no se copian, sin perturbar el orden de los elementos restantes y devolver el final de un nuevo intervalo de destino.
template<class InputIterator, class OutputIterator, class Type>
OutputIterator remove_copy(
InputIterator _First,
InputIterator _Last,
OutputIterator _Result,
const Type& _Val
);
Parámetros
_First
Un iterador de entrada que dirige la posición del primer elemento del intervalo de donde se están quitando los elementos._Last
Un iterador de entrada que dirige la posición una más allá del último elemento en el intervalo de donde se están quitando los elementos._Result
Un iterador de salida que dirige la posición del primer elemento del intervalo de destino al que 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 de destino, una más allá del último elemento de la copia de la secuencia el remanente libre value especificado.
Comentarios
El origen y los rangos de destino hace referencia deben ser válidos; todos los punteros deben ser dereferenceable y dentro de la secuencia la posición última es accesible de primera por el aumento.
Debe haber suficiente espacio en el rango de destino para contener los elementos del remanente que se copiarán después de que los elementos de valor especificado se eliminan.
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 y como máximo (_Last – _First) las asignaciones.
remove_copy tiene dos formatos relacionados:
Para obtener información sobre el comportamiento de estas funciones, vea Iteradores activados.
Ejemplo
// alg_remove_copy.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
using namespace std;
vector <int> v1, v2(10);
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 << "The original 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_copy ( v1.begin( ), v1.end( ), v2.begin( ), 7 );
cout << "Vector v1 is left unchanged as ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
cout << "Vector v2 is a copy of v1 with the value 7 removed:\n ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")." << endl;
}
Resultados del ejemplo
The original vector v1 is: ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v1 is left unchanged as ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v2 is a copy of v1 with the value 7 removed:
( 1 9 2 0 3 4 6 8 5 0 ).
Requisitos
Encabezado: <algorithm>
Espacio de nombres: std