알고리즘

[C++] reverse(), rotate(), copy() 로 배열 다루기

shj718 2023. 4. 8. 12:04

3가지 함수를 사용하려면 algorithm 헤더파일이 필수다.

#include <algorithm>

reverse() - 배열 뒤집기

[첫번째 반복자, 두번째 반복자) 범위의 배열 원소들을 뒤집는다.

reverse(fisrt_iter, last_iter)

예시 코드는 아래와 같다.

vector<int> myvector;

for (int i=1; i<10; ++i) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9

reverse(myvector.begin(),myvector.end());    // 9 8 7 6 5 4 3 2 1

 

rotate() - 배열 돌리기

가운데 반복자(middle_iter)가 가리키는 원소가 배열의 첫번째가 되도록 [첫번째 반복자, 마지막 반복자) 범위의 배열 원소를 회전 시킨다.

rotate(first_iter, middle_iter, last_iter)

예시 코드는 아래와 같다.

vector<int> myvector;

for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9

rotate(myvector.begin(),myvector.begin()+3,myvector.end()); // 4 5 6 7 8 9 1 2 3

 

copy() - 배열 복제

마지막 반복자(dest_iter)가 가리키는 위치에 [첫번째 반복자, 두번째 반복자) 범위의 배열을 복사한다.

copy(origin_first_iter, origin_last_iter, dest_first_iter)

예시 코드는 아래와 같다.

int myints[]={10,20,30,40,50,60,70}; // 원본 배열

vector<int> myvector (7); // 복제할 배열

copy ( myints, myints+7, myvector.begin() );