[C++] 배열 순서 거꾸로 뒤집기

배열에 저장된 요소들의 순서를 거꾸로 뒤집는, 역순으로 변경하는 방법을 소개합니다.

1. std::reverse()를 이용한 방법

std::reverse(first, last)는 인자로 전달된 범위의 배열 요소들의 순서를 거꾸로 변경합니다.

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};

    std::reverse(std::begin(arr), std::end(arr));

    for (const int &i: arr) {
        std::cout << i << ' ';
    }

    return 0;
}

Output:

6 5 4 3 2 1

2. std::swap()을 이용한 방법

반복문과 swap()으로 아래와 같이 배열의 순서를 바꿀 수 있습니다. swap(a, b)는 배열에서 a와 b 값의 위치를 변경합니다.

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};

    int n = sizeof(arr) / sizeof(*arr);
    for (int i = 0; i < n / 2; i++) {
        std::swap(arr[i], arr[n - i - 1]);
    }

    for (const int &i: arr) {
        std::cout << i << ' ';
    }

    return 0;
}

Output:

6 5 4 3 2 1

3. 직접 swap을 구현하는 방법

std::swap을 사용하지 않고, 아래와 같이 직접 배열 요소 값을 변경하도록 구현할 수 있습니다.

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};

    int n = sizeof(arr) / sizeof(*arr);
    for (int i = 0; i < n / 2; i++) {
        int temp = arr[i];
        arr[i] = arr[n - i - 1];
        arr[n - i - 1] = temp;
    }

    for (const int &i: arr) {
        std::cout << i << ' ';
    }

    return 0;
}

Output:

6 5 4 3 2 1
Loading script...
codechachaCopyright ©2019 codechacha