copy

[機能]

  指定した範囲をコピーします.

[形式]
	#include <algorithm>
	#include <functional>

	template <class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);
		

[使用例]

  1. copy と copy_backward の使用方法です.コピーの際,挿入イテレータを使用しない限り,自動的に領域は拡張されませんので注意してください.
    #include <stdio.h>
    #include <vector>
    using namespace std;
    
    int main()
    {
    	int i1;
    	vector<int> v1, v2, v3;
    	vector<int>::iterator it;
    					// 初期設定
    	printf("**初期設定 : v1**\n");
    	for (i1 = 0; i1 < 5; i1++)
    		v1.push_back(i1);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	printf("**初期設定 : v2**\n");
    	v2.push_back(10);
    	v2.push_back(20);
    	v2.push_back(30);
    	for (it = v2.begin(); it != v2.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// copy
    	printf("**v1 の 2 番目の要素以降に v2 をコピー**\n");
    	copy(v2.begin(), v2.end(), v1.begin()+1);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	printf("**v1 の 2 番目の前に v2 を挿入コピー**\n");
    	copy(v2.begin(), v2.end(), inserter(v1, v1.begin()+1));
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	printf("**v1 を v3 にコピー(挿入コピーでないとだめ)**\n");
    	copy(v1.begin(), v1.end(), inserter(v3, v3.begin()));
    	for (it = v3.begin(); it != v3.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// copy_backward
    	printf("**v2 を v1 の一番後にコピー**\n");
    	copy_backward(v2.begin(), v2.end(), v1.end());
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	return 0;
    }
    			
    (出力)
    **初期設定 : v1**
      0  1  2  3  4
    **初期設定 : v2**
      10  20  30
    **v1 の 2 番目の要素以降に v2 をコピー**
      0  10  20  30  4
    **v1 の 2 番目の前に v2 を挿入コピー**
      0  10  20  30  10  20  30  4
    **v1 を v3 にコピー(挿入コピーでないとだめ)**
      0  10  20  30  10  20  30  4
    **v2 を v1 の一番後にコピー**
      0  10  20  30  10  10  20  30
    			
[参照]

copy_backwardreplace_copyreplace_copy_ifremove_copyremove_copy_ifreverse_copyrotate_copyunique_copy

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引