[C++] 배열 복사하는 방법 (copy, memcpy)

배열의 모든 값들을 다른 배열에 복사하는 다양한 방법을 소개합니다.

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

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

아래와 같이 배열을 복사할 수 있습니다.

#include <iostream>
#include <algorithm>
#include <iterator>


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

    int dest[5];
    std::copy(std::begin(arr), std::end(arr), std::begin(dest));

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

    return 0;
}

Output:

1 2 3 4 5

1.1 std::copy_n()을 이용한 방법

std::copy_n(first, count, result)는 배열 first에서 count 개수만큼 result 배열에 복사합니다.

아래와 같이 배열을 복사할 수 있습니다.

#include <iostream>
#include <algorithm>
#include <iterator>


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

    int dest[size];

    std::copy_n(arr, size, dest);

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

    return 0;
}

Output:

1 2 3 4 5

2. std::memcpy()를 이용한 방법

std::memcpy(dest, src, count)는 src의 배열에서 count 개수만큼 dest 배열에 복사합니다.

아래와 같이 배열을 복사할 수 있습니다.

#include <iostream>
#include <cstring>

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

    int dest[5];
    std::memcpy(&dest, &arr, sizeof(arr));

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

    return 0;
}

Output:

1 2 3 4 5

3. 반복문으로 직접 복사하는 방법

for문을 이용하여 아래와 같이 직접 배열을 복사할 수 있습니다.

#include <iostream>
#include <cstring>

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

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

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

    return 0;
}

Output:

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