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의 이동 버전이라고 보면 돼요. 겹치는 범위를 오른쪽으로 이동시킬 때 씁니다.

더 알아보기 (Learn more)

cppreference