Condividi tramite


copy

L'assegnazione dei valori degli elementi da un intervallo di origine in un intervallo di destinazione, ripetenti con la sequenza di origine di elementi e assegnare loro le nuove posizioni in avanti.

template<class InputIterator, class OutputIterator>
   OutputIterator copy(
      InputIterator _First, 
      InputIterator _Last, 
      OutputIterator _DestBeg
   );

Parametri

  • _First
    Un iteratore di input destinato alla posizione del primo elemento nell'intervallo di origine.

  • _Last
    Un iteratore di input destinato alla posizione che è una dopo l'elemento finale nell'intervallo di origine.

  • _DestBeg
    Un iteratore di output destinato alla posizione del primo elemento nell'intervallo di destinazione.

Valore restituito

Un iteratore di output destinato alla posizione che è una dopo l'elemento finale nell'intervallo di destinazione, ovvero, un iteratore è destinato a _Result + (_Last – _First ).

Note

L'intervallo di origine sia valido e deve essere spazio sufficiente per la destinazione per utilizzare tutti gli elementi copiati.

Poiché l'algoritmo copia gli elementi di origine in base a partire dal primo elemento, l'intervallo di destinazione può far coincidere con l'intervallo di origine fornito la posizione _Lastintervallo di origine non è contenuto nell'intervallo di destinazione.copy può essere utilizzato per scorrere gli elementi a sinistra e non la destra, a meno che non vengano sovrapposizione tra origine e gli intervalli di destinazione.Per scorrere verso destra qualsiasi numero di posizioni, utilizzare l'algoritmo copy_backward.

L'algoritmo copy modifica solo i valori puntati dagli iteratori, assegnare nuovi valori agli elementi dell'intervallo di destinazione.Non può essere utilizzato per creare nuovi elementi e non può inviare direttamente gli elementi in un contenitore vuoto.

copy dispone di due form correlati:

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

Esempio

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

int main() {
   using namespace std;
   vector <int> v1, v2;
   vector <int>::iterator Iter1, Iter2;

   int i;
   for ( i = 0 ; i <= 5 ; i++ )
      v1.push_back( 10 * i );

   int ii;
   for ( ii = 0 ; ii <= 10 ; ii++ )
      v2.push_back( 3 * ii );

   cout << "v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   cout << "v2 = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;

   // To copy the first 3 elements of v1 into the middle of v2
   copy( v1.begin( ), v1.begin( ) + 3, v2.begin( ) + 4 );

   cout << "v2 with v1 insert = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;

   // To shift the elements inserted into v2 two positions
   // to the left
   copy( v2.begin( )+4, v2.begin( ) + 7, v2.begin( ) + 2 );

   cout << "v2 with shifted insert = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;
}

Per un'altra rappresentazione dell'esempio viene illustrato come utilizzare la copia, vedere accumulate, copy, e vector::push_back.

  

Output

v1 = ( 0 10 20 30 40 50 )
v2 = ( 0 3 6 9 12 15 18 21 24 27 30 )
v2 with v1 insert = ( 0 3 6 9 0 10 20 21 24 27 30 )
v2 with shifted insert = ( 0 3 0 10 20 10 20 21 24 27 30 )

Requisiti

intestazione: <algorithm>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

Libreria di modelli standard