rotate

[機能]

  イテレータ middle が指す要素が先頭になるように左方向に回転します.

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

	template <class ForwardIterator> void rotate(ForwardIterator first, ForwardIterator middle, Forwarditerator last);
		

[使用例]

  1. rotate と rotate_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 の要素 3 が先頭になるように左方向に回転する
    	printf("v1 の要素 3 が先頭になるように左方向に回転する\n");
    	rotate(v1.begin(), v1.begin()+2, v1.end());
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// v1 の要素 5 が先頭になるように左方向に回転し,v2 にコピー
    	printf("v1 の要素 5 が先頭になるように左方向に回転し,v2 にコピー\n");
    	rotate_copy(v1.begin(), v1.begin()+2, v1.end(), 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 の要素 3 が先頭になるように左方向に回転する
      3  4  5  1  2
    v1 の要素 5 が先頭になるように左方向に回転し,v2 にコピー
      v1  3  4  5  1  2
      v2  5  1  2  3  4
    			
[参照]

rotate_copy

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