Condividi tramite


remove_copy

Copia di elementi da un intervallo di origine in un intervallo di destinazione, ad eccezione degli elementi di un determinato valore non vengono copiati, senza pregiudicare l'ordine degli elementi rimanenti e restituire la fine del nuovo intervallo di destinazione.

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

Parametri

  • _First
    Un iteratore di input destinato alla posizione del primo elemento nell'intervallo da cui gli elementi vengono rimuovere.

  • _Last
    Un iteratore di input destinato alla posizione una dopo l'elemento finale nell'intervallo da cui gli elementi vengono rimuovere.

  • _Result
    Un iteratore di output destinato alla posizione del primo elemento nell'intervallo di destinazione in cui gli elementi vengono rimuovere.

  • _Val
    Il valore da rimuovere dall'intervallo.

Valore restituito

Un iteratore avanti destinato a esente la nuova posizione finale dell'intervallo di destinazione, una dopo l'elemento finale della copia della sequenza del resto dal valore specificato.

Note

Il database di origine e gli intervalli di destinazione fatto riferimento siano validi, tutti i puntatori devono essere dereferenceable e all'interno della sequenza dell'ultima posizione è raggiungibile da prima dall'aumento.

Deve essere sufficientemente spazio nell'intervallo di destinazione per contenere gli elementi del resto che verranno copiati dopo che gli elementi del valore specificato vengono rimossi.

L'ordine degli elementi eliminati non rimane invariata.

operator== utilizzato per determinare l'uguaglianza tra elementi necessario imporre una relazione di equivalenza fra i propri operandi.

Complessità è lineare; esistono_Last (–) _Firstconfronti di uguaglianza e al massimo (_Last –) _Firstassegnazioni.

remove_copy dispone di due form correlati:

Per informazioni su come queste funzioni si comportano, vedere Iteratori verificati.

Esempio

// 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;
}

Esempio di output

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 ).

Requisiti

intestazione: <algorithm>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

remove_copy (STL Samples)

Libreria di modelli standard