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

remove_if

Elimina los elementos que cumplen un predicado 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 Predicate>
   ForwardIterator remove_if(
      ForwardIterator _First, 
      ForwardIterator _Last,
      Predicate _Pred
   );

_First

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

_Last

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

_Pred

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

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.

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 lista hace que una versión más eficaz de funciones miembro de quite que vuelve a vincular punteros.

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

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

int main( ) {
   using namespace std;
   vector <int> v1, v2;
   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 satisfying predicate greater6
   new_end = remove_if (v1.begin( ), v1.end( ), greater6 );

   cout << "Vector v1 with elements satisfying greater6 removed is\n ( " ;
   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 elements satisfying greater6 removed is\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;
}

Vector v1 is ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v1 with elements satisfying greater6 removed is
 ( 1 2 0 3 4 6 5 3 4 6 8 5 7 7 ).
Vector v1 resized elements satisfying greater6 removed is
 ( 1 2 0 3 4 6 5 ).

Encabezado: <algorithm>

Espacio de nombres: std

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft