C++에서는 <algorithm> 헤더 파일에 포함된 reverse() 함수를 사용하면 별도의 반복문이나 추가 로직 없이 배열을 손쉽게 뒤집을 수 있습니다.
예를 들어 배열이 A = [10, 20, 30, 40, 50, 60]과 같다면, reverse() 함수를 적용한 결과는 B = [60, 50, 40, 30, 20, 10]이 됩니다.
reverse() 함수의 동작 원리
reverse() 함수는 두 개의 반복자(iterator) 인자를 받습니다. 첫 번째 인자는 뒤집을 범위의 시작 위치, 두 번째 인자는 범위의 끝(마지막 요소 다음 위치)을 가리킵니다. 함수가 호출되면 해당 범위 내의 모든 요소 순서가 제자리(in-place)에서 역순으로 변경됩니다.
예제 코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {10, 20, 30, 40, 50, 60};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "뒤집기 전 배열: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
// reverse() 함수로 배열 전체를 뒤집음
reverse(arr, arr + n);
cout << "\n뒤집은 후 배열: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}실행 결과
뒤집기 전 배열: 10 20 30 40 50 60 뒤집은 후 배열: 60 50 40 30 20 10
코드 설명
sizeof(arr) / sizeof(arr[0]) 연산으로 배열의 전체 크기를 요소 하나의 크기로 나누어 배열 길이 n을 구합니다. 이후 reverse(arr, arr + n)을 호출하면 배열의 첫 번째 요소부터 마지막 요소까지 전체 범위가 한 번에 뒤집힙니다.
이 방법은 직접 반복문을 작성해 요소를 교환하는 것보다 코드가 간결하고 가독성이 뛰어나며, 표준 라이브러리가 최적화되어 있어 안정적인 성능을 기대할 수 있습니다. 참고로 reverse() 함수는 배열뿐만 아니라 vector, string 등 임의 접근 반복자(random access iterator)를 지원하는 모든 컨테이너에 사용할 수 있습니다.