Aracılığıyla paylaş


copy

Öğelerin değerlerini kaynak aralığından öğeleri kaynak sırası yineleme ve ileriye doğru bir yönde yeni konumlara atama bir hedef aralığı atar.

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

Parametreler

  • _First
    Kaynak aralığındaki ilk öğenin konumunu adresleme giriş Yineleyici.

  • _Last
    Bir kaynak aralığındaki son öğe geçmiş konum adresleme giriş Yineleyici.

  • _DestBeg
    Hedef aralıkta ilk öğenin konumunu adresleme çıktı Yineleyici.

Dönüş Değeri

Hedef aralığın son öğesinde geçmiş yani biridir pozisyon adresleme çıktı Yineleyici, Yineleyici adresleri _Result + (_Last – _First ).

Notlar

Kaynak aralığı geçerli olmalı ve hedefte kopyalanan öğeleri saklamak için yeterli boş alan olmalıdır.

Sipariş başlayan ilk öğe, kaynak öğelerden algoritması kopyaladığı için kaynak aralığı sağlanan hedef aralık üstüste _Last hedef aralığında kaynak aralığını konumunu yer değil. copy sol ancak hakkı olmayan öğeleri kaymak için kaynak ve hedef aralıkları arasında örtüşme değilse kullanılabilir. Herhangi bir pozisyon sayısını sağa kaydırmak için copy_backward algoritması.

Copy algoritma yalnızca öğelerin hedef aralıktaki yeni değerler atayarak Yineleyicilerde göre sıralanmasını değerleri değiştirir. Yeni öğe oluşturmak için kullanılamaz ve öğeleri boş bir kapsayıcıya doğrudan ekleyemezsiniz.

copyiki ilişkili formlar:

Bu işlevler nasıl davranacağını hakkında bilgi için bkz: İşaretli Yineleyiciler.

Örnek

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

Nasıl kopya kullanılacağını gösteren başka bir örnek için bkz: accumulate, copy, ve vector::push_back.

  

Çıktı

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 )

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

Standart Şablon Kütüphanesi