copy
要素のソース シーケンスを反復処理し、下方向の新しい位置を割り当てるソース範囲内の割り当て先範囲に要素の値を割り当てます。
template<class InputIterator, class OutputIterator>
OutputIterator copy(
InputIterator _First,
InputIterator _Last,
OutputIterator _DestBeg
);
パラメーター
_First
ソース範囲内の先頭の要素の位置を示す入力反復子。_Last
ソース範囲内の最後の要素を指す 1 での位置を示す入力反復子。_DestBeg
割り当て先範囲の先頭の要素の位置を示す出力反復子。
戻り値
割り当て先範囲、つまり、反復子の最後の要素を指す 1 である位置を示す出力反復子は _Result + を指定します (_Last – _First)。
解説
ソース範囲内が有効で、コピーするすべての要素を保持する十分な領域がターゲットに必要です。
アルゴリズムが最初の要素から順番にソース要素をコピーすると、コピー先のスコープがターゲットの範囲でソース範囲内に指定されたソース範囲内の _Last の位置は含まれません複製できます。 ソースとターゲットの範囲内に重複があるコピー が 左、右に要素を移動するために使用できます。 右の任意の位置に移動するには、copy_backward アルゴリズムを使用します。
コピー アルゴリズムがターゲットの span 要素に新しい値を割り当てる反復子が指す値のみを変更します。 これは、新しい要素の作成には使用できず、空のコンテナーに要素を直接挿入することはできません。
copy に 2 個の関連フォームがあります:
これらの関数の動作方法については、「チェックを行う反復子」を参照してください。
使用例
// 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を参照してください。
出力
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