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. 참 조 

 
 

rotate - C++ Reference

function template std::rotate template void rotate (ForwardIterator first, ForwardIterator middle, ForwardIterator last); template ForwardIterator rotate (ForwardIterator first, ForwardIterator middle, ForwardIterator last); Rotate left the ele

www.cplusplus.com

 

 

300x250