Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL의 reverse() 함수로 배열 간단히 뒤집는 방법

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)를 지원하는 모든 컨테이너에 사용할 수 있습니다.