C++でアレイのコピーを作成します
この投稿では、C++でアレイのコピーを作成する方法について説明します。
1.使用する std::copy
アレイから別のアレイにすべての要素をコピーするための推奨される解決策は、標準のアルゴリズムを使用することです std::copy
から <algorithm>
ヘッダ。次のコード例は、この関数の呼び出しを示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <algorithm> #include <iterator> int main() { const int n = 5; int src[] = {1, 3, 5, 7, 9}; int dest[n]; std::copy(std::begin(src), std::end(src), std::begin(dest)); for (int &i: dest) { std::cout << i << ' '; } return 0; } |
出力:
1, 3, 5, 7, 9
使用することもできます std::n_copy
からのアルゴリズム <algorithm>
以下に示すように、ヘッダー:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <algorithm> #include <iterator> int main() { const int n = 5; int src[] = {1, 3, 5, 7, 9}; int dest[n]; std::copy_n(src, n, dest); for (int &i: dest) { std::cout << i << ' '; } return 0; } |
出力:
1, 3, 5, 7, 9
2.コピーコンストラクターの使用
C++ 11以降、直接コピーできます std::array
代入演算子またはコピーコンストラクターを使用します。これは、Cスタイルのアレイでは機能しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <array> int main() { const int n = 5; std::array<int, n> src = {1, 3, 5, 7, 9}; std::array<int, n> dest = src; // また, std::array<int, n> dest(src); for (int &i: dest) { std::cout << i << ' '; } return 0; } |
出力:
1, 3, 5, 7, 9
3.forループの使用
別の解決策は、インデックスベースのforループを使用してソースアレイをループし、検出された各要素を宛先アレイの正しい位置に追加することです。これは、以下の簡単なコードに変換されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> int main() { const int n = 5; int src[] = {1, 3, 5, 7, 9}; int dest[n]; for (int i = 0; i < n; i++) { dest[i] = src[i]; } for (int &i: dest) { std::cout << i << ' '; } return 0; } |
出力:
1, 3, 5, 7, 9
4.使用する std::memcpy
のアレイの場合 POD(プレーンオールドデータ)タイプ int、charなどのように、を使用してアレイのバイナリコピーを実行できます std::memcpy
関数。コードは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cstring> int main() { const int n = 5; int src[] = {1, 3, 5, 7, 9}; int dest[n]; std::memcpy(&dest, &src, sizeof(src)); for (int &i: dest) { std::cout << i << ' '; } return 0; } |
出力:
1, 3, 5, 7, 9
これで、C++でアレイのコピーを作成できます。