알고리즘
[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() );