Freigeben über


copy

Weist die Werte der Elemente eines Quellbereich zu einem Zielbereich zu, durchläuft die Quellfolge von gelöschte durch und ggf. weist ihnen neue Positionen zu.

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

Parameter

  • _First
    Ein Eingabeiterator, der die Position des ersten Elements im Quellbereich behandelt.

  • _Last
    Ein Eingabeiterator, der die Position behandelt, die eine hinter dem letzten Element im Quellbereich ist.

  • _DestBeg
    Ein Ausgabeiterator, der die Position des ersten Elements im Zielbereich behandelt.

Rückgabewert

Ein Ausgabeiterator, der die Position abweicht, die eine hinter dem letzten Element im Zielbereich h. der Iterator ist, behandelt _Result + (_Last - _First ).

Hinweise

Der Quellbereich muss gültig sein und muss genügend Speicherplatz am Ziel geben, um alle Elemente enthalten, die kopiert werden.

Da der Algorithmus die Quellelemente im Reihenfolgenanfang mit dem ersten Element kopiert, kann der Zielbereich mit dem Quellbereich überlappen kann die _Last Position des Quellbereichs wird nicht im Zielbereich enthalten.copy kann verwendet werden, um Elemente rechts nach links jedoch nicht zu verschieben, es sei denn, es keine Überlappung zwischen der Quelle und den Zielbereichen gibt.Um rechts eine beliebige Anzahl Positionen zu verschieben, verwenden Sie den copy_backward Algorithmus.

Der copy Algorithmus ändert nur die Werte, die von den Iteratoren angezeigt werden und weist neue Werte von Elementen im Zielbereich zu.Er kann nicht verwendet werden, um neue Elemente zu erstellen und kann nicht Einsatzelemente in einen Leercontainer direkt.

copy hat zwei verknüpfte Formulare:

Informationen darüber, wie diese Funktionen verhalten, finden Sie unter Überprüfte Iteratoren.

Beispiel

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

Eine andere Beispielvertretung, wie Kopie, finden Sie unter accumulate, copy, und vector::push_back verwendet.

  

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 )

Anforderungen

Header: <algorithm>

Namespace: std

Siehe auch

Referenz

Standardvorlagenbibliothek