Rotate
2개의 인접한 범위에 있는 요소들을 교환합니다.
template <class For>
void Rotate (
For first,
For mid,
For last
);
Template 파라미터
- For
-
순방향 반복자입니다.
파라미터
- first
-
회전될 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
- mid
-
범위의 1번째 부분과 요소를 교환해야 하는 범위의 2번째 부분에서 1번째 요소의 위치를 설명하는 범위 내에서 경계를 정의하는 순방향 반복자입니다.
- last
-
회전될 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
설명
Rotate는 범위 내 요소들을 회전시킵니다.
즉, mid가 가리키는 요소는 위치 first로 이동되고, mid + 1가 가리키는 요소는 first + 1로 이동됩니다. 이런 식으로 계속 됩니다.
이 동작에 대해 생각해야 할 한 가지 방법은 두 범위 [first, mid)와 [mid, last)를 교환하는 것입니다.
공식적으로 0 <= n < last - first인 모든 정수 n에 대하여, 요소 *(first + n)은 *(first + (n + (last - mid)) % (last - first))에 할당됩니다.
Rotate는 first + (last - mid)를 리턴합니다.
참고사항
알고리즘