配列のすべての値を別の配列にコピーするさまざまな方法を紹介します。
1. std::copy() を使った方法
std::copy(first, last, d_first) は、配列の最初の位置から最後の位置の間の要素を別の配列 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