rotate
rotate (회전)
범위의 요소를 특정 위치를 기준으로 회전(왼쪽 이동)시키는 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
rotate는 범위를 middle을 기준으로 회전시켜요. [middle, last) 구간이 앞으로 오고 [first, middle)이 뒤로 와요.
template< class ForwardIt >
ForwardIt rotate( ForwardIt first, ForwardIt middle, ForwardIt last );
- 반환 값: 원래 첫 요소가 새로 놓인 위치를 가리키는 반복자.
- 복잡도:
last - first에 선형.
std::vector<int> v{1, 2, 3, 4, 5};
std::rotate(v.begin(), v.begin() + 2, v.end());
// v == {3,4,5,1,2}
배열을 왼쪽으로 밀어 시작점을 바꾸거나 순환 큐를 구현할 때 유용해요. 문자열을 회전해 "어떤 회전이 사전순으로 최소인지" 같은 문제에 자주 쓰여요.