共用方式為


copy

將值從來源範圍到目的範圍,逐一查看來源項目序列並指定順向移動項目的值的新位置。

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

參數

  • _First
    處理輸入的 Iterator 第一個項目的位置位於來源範圍。

  • _Last
    處理輸入的Iterator是一個可以在來源範圍中的最後一個項目的位置。

  • _DestBeg
    解決輸出 Iterator 的第一個項目的位置在目的範圍。

傳回值

解決輸出的Iterator是一個可以在目的範圍,也就是說, Iterator的最後一個項目的位置解決 _Result + (_Last – _First )。

備註

來源範圍必須是有效的,而且必須有足夠的空間會保留所有的元素之目的端複製。

因為演算法(從第一個元素開始複製來源項目的順序,目的範圍可以與來源範圍重疊提供來源範圍的 _Last 位置在目的範圍而不是包含的。 ,除非沒有在來源和目的範圍之間,重複copy 可用來傳輸項目左邊,而非右邊。 若要將右邊任意數目的位置,請使用 copy_backward 演算法。

copy 演算法只修改值指向的Iterator,指派新值給目的範圍的項目。 它不是用來建立新的項目,且無法直接將項目插入一個空的容器(Container)。

copy 有兩個關聯的表單:

如需這些函式如何運作的詳細資訊,請參閱 檢查過的 Iterator

範例

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

如需另一個範例顯示如何使用複本,請參閱 accumulate, copy, 和 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 )

需求

標題: <algorithm>

命名空間: std

請參閱

參考

標準樣板程式庫