copy_backward
copy_backward は copy に似ているようで、少し動作がわかりにくいところがあるので注意が必要です。
どこが分かりにくいか、というとコピー先の場所の指定が少々直感的でない(ように私は思います)。
copy_backward の利用例・サンプル
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> v;
vector<char>::iterator i;
for (int j = 0; j < 20; j++) {
v.push_back('a' + j);
}
i = v.begin();
while (i != v.end()) {
cout << *i;
++i;
}
cout << endl;
copy_backward(v.begin(), v.begin() + 5, v.end() - 3);
i = v.begin();
while (i != v.end()) {
cout << *i;
++i;
}
cout << endl;
return 0;
}
上記コードの実行結果は以下の通り。
./a.out
abcdefghijklmnopqrst
abcdefghijklabcderst
このように、v.begin() から5つ分の要素が、v.end()から 3 引いた場所の後方に詰めるようにコピーされていることが確認できますね。