[C++] 2차 배열 복사 방법

2차원 배열의 모든 요소들을 다른 배열로 복사하는 방법을 소개합니다.

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

std::copy(first, last, d_first)는 배열의 first 위치에서 last 위치 사이의 요소들을 다른 배열 d_first에 복사합니다. d_first는 복사하려는 배열의 첫번째 위치입니다.

아래와 같이 copy()로 2차 배열의 시작과 끝의 위치를 인자로 전달하고, 복사하려는 배열의 시작 위치를 전달하여 복사할 수 있습니다.

#include <iostream>
#include <algorithm>

int main() {
    int m = 3, n =3;
    int arr[m][n] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    };

    int dest[m][n];
    std::copy(&arr[0][0], &arr[0][0] + (m * n), &dest[0][0]);

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

    return 0;
}

Output:

1 2 3
4 5 6
7 8 9

2. 반복문을 이용하여 직접 복사하는 방법

아래와 같이 2중 for문을 사용하여 2차 배열의 모든 요소를 복사할 수 있습니다.

#include <iostream>

int main() {
    int m = 3, n =3;
    int arr[m][n] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    };

    int dest[m][n];
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            dest[i][j] = arr[i][j];
        }
    }

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

    return 0;
}

Output:

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