RotateCopy
소스 범위 내의 2개의 인접한 범위에 있는 요소들을 교환하고 결과를 대상 범위로 복사합니다.
template <class For, class Out>
Out RotateCopy (
For first,
For mid,
For last,
Out res
);
Template 파라미터
- For
-
순방향 반복자입니다.
- Out
-
출력 반복자입니다.
파라미터
- first
-
회전될 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
- mid
-
범위의 1번째 부분과 요소를 교환해야 하는 범위의 2번째 부분에서 1번째 요소의 위치를 설명하는 범위 내에서 경계를 정의하는 순방향 반복자입니다.
- last
-
회전될 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
- res
-
목적지 범위의 1번째 요소의 위치를 설명하는 출력 반복자입니다.
리턴 값
목적지 범위의 마지막 직전 요소의 위치를 설명하는 출력 반복자입니다.
설명
RotateCopy는 범위 [first, last)로부터 범위 [result, result + (last - first))로 요소들을 복사합니다.
즉, *mid는 *result로 복사되고, *(mid + 1)은 *(result + 1)로 복사됩니다. 이런 식으로 계속됩니다.
공식적으로 0 <= n < last - first인 모든 정수 n에 대하여
RotateCopy는 할당 *(result + (n + (last - mid)) % (last - first)) = *(first + n)을 수행합니다.
RotateCopy는 Copy를 하고 나서 Rotate를 한 것과 비슷하지만 훨씬 효율적입니다.
리턴 값은 result + (last - first)입니다.
참고사항
알고리즘