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