[C++] 두 배열을 하나의 배열로 합치기

2개의 배열의 모든 요소를 하나의 배열에 합치는 방법을 소개합니다.

1. for문을 이용하여 하나의 배열로 합치기

기본적인 접근 방법으로, 두 배열의 모든 요소 개수 크기의 배열을 생성합니다. 그리고 두 배열의 요소들을 새로 생성한 배열에 모두 넣을 수 있습니다.

#include <iostream>
#include <algorithm>

int main() {

    int arr1[] = { 1, 2, 3 };
    int arr2[] = { 4, 5, 6, 7 };

    int m = sizeof(arr1)/sizeof(arr1[0]);
    int n = sizeof(arr2)/sizeof(arr2[0]);

    int result[m + n];
    for (int i = 0; i < m + n; i++) {
        if (i < m) {
            result[i] = arr1[i];
        } else {
            result[i] = arr2[i - m];
        }
    }

    for (int i = 0; i < m + n; i++) {
        std::cout << result[i] << ' ';
    }

    return 0;
}

Output:

1 2 3 4 5 6 7

2. copy()를 이용하여 하나의 배열로 합치기

copy(first, last, d_first)는 배열의 요소 범위를 다른 배열에 복사합니다. 이 메소드를 이용하여 두개의 배열을 하나의 배열로 합칠 수 있습니다. 함수에 대한 설명은 예제 코드 아래에 있습니다.

#include <iostream>
#include <algorithm>

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

    int m = sizeof(arr1)/sizeof(arr1[0]);
    int n = sizeof(arr2)/sizeof(arr2[0]);

    int result[m + n];
    std::copy(arr1, arr2 + m, result);
    std::copy(arr2, arr2 + n, result + m);

    for (int i = 0; i < m + n; i++) {
        std::cout << result[i] << ' ';
    }

    return 0;
}

Output:

1 2 3 4 5 6 7

copy()의 정의는 아래와 같으며 다음과 같은 인자를 받습니다.

OutputIt copy(InputIt first, InputIt last, OutputIt d_first);
  • first: 복사하는 배열의 시작 위치
  • last: 복사하는 배열의 끝 위치
  • d_first: 복사되는 배열의 시작 위치
Loading script...
codechachaCopyright ©2019 codechacha