move_backward
move_backward (뒤에서부터 이동 복사)
범위의 요소를 목적지 끝에 맞춰 뒤에서부터 이동하는 알고리즘이에요. 범위가 겹칠 때 유용해요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
move_backward는 범위 [first, last)의 요소를 d_last로 끝나는 목적지 범위로, last부터 first 쪽으로 역순으로 이동해요.
template< class BidirIt1, class BidirIt2 >
BidirIt2 move_backward( BidirIt1 first, BidirIt1 last, BidirIt2 d_last );
- 반환 값: 목적지 범위에서 마지막으로 이동된 원소를 가리키는 반복자.
d_last가(first, last]안에 있으면 미정의 동작이에요.
요소를 오른쪽으로 밀어야 할 때 앞에서부터 이동하면 이미 이동된 값을 덮어쓰므로, move_backward로 뒤에서부터 처리하면 안전해요.
std::vector<std::string> v{"a", "b", "c", "", ""};
std::move_backward(v.begin(), v.begin() + 3, v.end());
// v == {"a","b","c","a","b"} 형태로 이동
copy_backward의 이동 버전이라고 보면 돼요. 겹치는 범위를 오른쪽으로 이동시킬 때 씁니다.