ranges::copy_backward
ranges::copy_backward (뒤에서 복사)
범위의 요소를 목적지 끝에 맞춰 뒤에서부터 복사하는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
std::ranges::copy_backward는 범위의 요소를 result로 끝나는 목적지 범위에, 뒤에서부터 복사해요.
namespace std::ranges {
template< std::bidirectional_iterator I, std::sentinel_for<I> S,
std::bidirectional_iterator O >
requires std::indirectly_copyable<I, O>
constexpr copy_backward_result<I, O>
copy_backward( I first, S last, O result );
}
- 복사는
last부터first쪽으로 역순으로 진행돼요. - 반환 값:
copy_backward_result{in, out}.
요소를 오른쪽으로 밀어야 할 때 앞에서 복사하면 값을 덮어쓰므로 뒤에서부터 복사하는 게 안전해요.
std::vector<int> v{1, 2, 3, 4, 5};
// 오른쪽으로 한 칸 밀기
std::ranges::copy_backward(v | std::views::take(4),
v.end());
범위가 겹치면서 오른쪽으로 이동할 때 유용해요.