Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

remove_copy

 

Publicada: junio de 2016

Copia elementos de un intervalo de origen a un intervalo de destino, excepto que los elementos de un valor especificado no se copian, sin alterar 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
   );

_First

Iterador de entrada que direcciona la posición del primer elemento del intervalo del que se quitan los elementos.

_Last

Iterador de entrada que direcciona la posición situada una posición después del elemento final del intervalo del que se quitan los elementos.

_Result

Iterador de salida que direcciona la posición del primer elemento del intervalo de destino del que se quitan los elementos.

_Val

El valor que debe quitarse del intervalo.

Iterador hacia delante que direcciona la nueva posición final del intervalo de destino, situada una posición después del elemento final de la copia de la secuencia restante sin el valor especificado.

Los intervalos de origen y destino a los que se hace referencia deben ser válidos; todos los punteros se deben poder desreferenciar y, dentro de la secuencia, la última posición debe ser accesible desde la primera mediante incrementos.

Debe haber suficiente espacio en el intervalo de destino para incluir los elementos restantes que se copiarán después de quitar elementos del valor especificado.

El orden de los elementos no quitados no se ve afectado.

El operator== utilizado para determinar la igualdad entre elementos debe imponer una relación de equivalencia entre sus operandos.

La complejidad es lineal, hay (_Last – _First) comparaciones para igualdad y, a lo sumo, (_Last – _First) asignaciones.

remove_copy tiene dos formatos relacionados:

  • checked_remove_copy

  • unchecked_remove_copy

Para obtener información sobre el comportamiento de estas funciones, consulte 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;
}

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

Mostrar: