reverse_copy

[機能]

  指定した範囲の要素の並び順を反転し,指定した場所にコピーします.ただし,コピー元は変化しません.

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

	template <class BidirectionalIterator, class OutputIterator> OutputIterator reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result);
		

[使用例]

  1. reverse と reverse_copy の使用方法です.
    #include <stdio.h>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
    	vector<int> v1, v2;
    	vector<int>::iterator it;
    					// 初期設定
    	printf("**初期状態 v1**\n");
    	for (int i1 = 0; i1 < 5; i1++)
    		v1.push_back(i1+1);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	printf("**初期状態 v2**\n");
    	for (int i1 = 0; i1 < 5; i1++)
    		v2.push_back(10*(i1+1));
    	for (it = v2.begin(); it != v2.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// v1 の 1 番目から 3 番目を反転する
    	printf("v1 の 1 番目から 3 番目を反転する\n");
    	reverse(v1.begin(), v1.begin()+3);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// 再度,v1 の 1 番目から 3 番目を反転し,v2 にコピー
    	printf("再度,v1 の 1 番目から 3 番目を反転し,v2 にコピー\n");
    	reverse_copy(v1.begin(), v1.begin()+3, v2.begin());
    	printf ("  v1");
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    	printf ("  v2");
    	for (it = v2.begin(); it != v2.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	return 0;
    }
    			
    (出力)
    **初期状態 v1**
      1  2  3  4  5
    **初期状態 v2**
      10  20  30  40  50
    v1 の 1 番目から 3 番目を反転する
      3  2  1  4  5
    再度,v1 の 1 番目から 3 番目を反転し,v2 にコピー
      v1  3  2  1  4  5
      v2  1  2  3  40  50
    			
[参照]

reversecopy

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