Graphisoft®

GSRootVersion: 1.0

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)을 수행합니다. RotateCopyCopy를 하고 나서 Rotate를 한 것과 비슷하지만 훨씬 효율적입니다. 리턴 값은 result + (last - first)입니다.

참고사항

알고리즘