Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

replace_copy_if

Examina cada elemento en un intervalo de origen y reemplácela si satisface un predicado especificado al copiar el resultado en un nuevo intervalo de destino.

template<class InputIterator, class OutputIterator, class Predicate, class Type>
   OutputIterator replace_copy_if(
      InputIterator _First, 
      InputIterator _Last, 
      OutputIterator _Result, 
      Predicate _Pred, 
      const Type& _Val
   );

_First

Un iterador de entrada que apunta a la posición del primer elemento del intervalo de donde se están reemplazando los elementos.

_Last

Un iterador de entrada que apunta a la posición una más allá del último elemento en el intervalo de donde se están reemplazando los elementos.

_Result

Un iterador de salida que apunta a la posición del primer elemento del intervalo de destino al que se copian los elementos.

_Pred

El predicado unario que debe ser cumplido es el valor de un elemento debe reemplazarse.

_Val

El nuevo valor que está asignado a los elementos cuyo valor anterior cumple el predicado.

Un iterador de salida que apunta a la posición una más allá del último elemento en el rango de destino a donde la secuencia modificada de elementos se copia.

El origen y los rangos de destino hace referencia se superpongan y deben válidos: todos los punteros deben ser dereferenceable y en las secuencias la posición última es accesible de primera por el aumento.

El orden de los elementos no reemplazados 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 de nuevos valores.

replace_copy_if tiene dos formatos relacionados:

Para obtener información sobre el comportamiento de estas funciones, vea Iteradores activados.

// alg_replace_copy_if.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <algorithm>
#include <iostream>

bool greater6 ( int value ) {
   return value >6;
}

int main( ) {
   using namespace std;
   vector <int> v1;
   list <int> L1 (13);
   vector <int>::iterator Iter1;
   list <int>::iterator L_Iter1;

   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( ) );

   int iii;
   for ( iii = 0 ; iii <= 13 ; iii++ )
      v1.push_back( 1 );

   cout << "The original vector v1 is:\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Replace elements with a value of 7 in the 1st half of a vector
   // with a value of 70 and copy it into the 2nd half of the vector
   replace_copy_if ( v1.begin( ), v1.begin( ) + 14,v1.end( ) -14,
      greater6 , 70);

   cout << "The vector v1 with values of 70 replacing those greater"
        << "\n than 6 in the 1st half & copied into the 2nd half is:\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Replace elements in a vector with a value of 70
   // with a value of 1 and copy into a list
   replace_copy_if ( v1.begin( ), v1.begin( ) + 13,L1.begin( ),
      greater6 , -1 );

   cout << "A list copy of vector v1 with the value -1\n replacing "
        << "those greater than 6 is:\n ( " ;
   for ( L_Iter1 = L1.begin( ) ; L_Iter1 != L1.end( ) ; L_Iter1++ )
      cout << *L_Iter1 << " ";
   cout << ")." << endl;
}

The original vector v1 is:
 ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ).
The vector v1 with values of 70 replacing those greater
 than 6 in the 1st half & copied into the 2nd half is:
 ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 70 1 70 2 0 70 70 3 4 6 70 5 70 70 ).
A list copy of vector v1 with the value -1
 replacing those greater than 6 is:
 ( -1 1 -1 2 0 -1 -1 3 4 6 -1 5 -1 ).

Encabezado: <algorithm>

Espacio de nombres: std

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft