std::copy_backward|std::next
std::copy_backward と std::next を覚えたのでメモ。
#include <bits/stdc++.h> using namespace std; int main() { vector<int> vc{1,2,3,4,5,6,7,8,9,10}; //指定された範囲の要素を後ろからコピーする copy_backward( vc.begin(), vc.begin() + 3, vc.end() ); for( const auto& x : vc ) cout << x << " "; return 0; }
↓OUTPUT
1 2 3 4 5 6 7 1 2 3
vc.begin() から vc.begin() + 3 までを そのまま後ろにずらしてコピーされている。
(上記の場合 1, 2, 3 を後ろにコピー。8, 9, 10 が上書きされている。)
で、vc.begin() + 3 というのは std::next を使って
next( vc.begin(), 3 ) とも書ける様です。(C++11)
std::next はn回進めたイテレータを返す。
参考
・copy_backward - cpprefjp C++日本語リファレンス
・next - cpprefjp C++日本語リファレンス