C++ 값 회전하기 rotate
Notepad96
·2020. 11. 18. 05:27
300x250
1. rotate
rotate 함수는 algorithm 라이브러리의 포함되어 있다.
rotate 함수를 사용함으로써 값을들 마치 회전시키는 듯
지정된 횟수만큼오른쪽으로 회전시키거나, 왼쪽으로 회전할 수 있다.
다만 회전 시킬 때마다 원소들 간에 swap을 해주는 것이기 때문에
컨테이너에 원소가 많이 존재하거나 하는 경우에는 매우 비효율적이며 특수한 경우가 아닌 경우 사용을 지양한다.
2. 코 드
환경 : Visual studio 2019
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 10, 40, 50, 30, 20 };
cout << "vector : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
rotate(v.begin(), v.begin() + 1, v.end());
cout << "1칸씩 왼쪽 이동 : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
rotate(v.begin(), v.begin() + 2, v.end());
cout << "2칸씩 왼쪽 이동 : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
rotate(v.begin(), v.begin() + 3, v.end());
cout << "3칸씩 왼쪽 이동 : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
rotate(v.begin(), v.end() - 1 , v.end());
cout << "1칸씩 오른쪽 이동 : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
rotate(v.begin(), v.end() - 3, v.end());
cout << "3칸씩 오른쪽 이동 : ";
for (int i : v) cout << i << " ";
cout << "\n================================\n";
return 0;
}
- rotate 함수는 인자로 (시작 반복자, 첫 위치로 올 Forward 반복자, 종료 반복자) 를 받는다.
- 왼쪽으로 2칸 씩 회전시키기 위해서는 2번 째 인수로 v.begin() + 2를 준다.
- 오른쪽으로 3칸 씩 회전시키기 위해서는 2번 째 인수로 v.end() - 3을 주었다.
3. 참 조
300x250
'C++ > STL' 카테고리의 다른 글
C++ time, clock 시간 측정, 현재 시간 구하기 (0) | 2020.11.18 |
---|---|
C++ 원소 삭제하기 remove (0) | 2020.11.18 |
C++ 거꾸로 뒤집기 reverse (0) | 2020.11.17 |
C++ map value sort - 맵 값 정렬 (0) | 2020.11.17 |
C++ 제곱 수, 제곱근 구하기 pow, sqrt, hypot (0) | 2020.11.16 |