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