ArrayCopy 関数
この関数は、配列を別の配列にコピーします。
配列は左から右にコピーされます。系列配列の場合、開始位置は、左から右にコピーするように調整してコピーされます。配列がそれ自体にコピーされた場合、結果は未定義です。
配列の型が異なる場合、コピー中にコピー元配列の各要素をコピー先配列の型に変換しようとします。string配列は、string配列にのみコピーできます。
初期化が必要なオブジェクトを含むクラスと構造体の配列はコピーはできません。構造体の配列は、同じ型の配列にのみコピーができます。
静的配列と動的配列 (クラスと構造体のメンバーを除く) の場合、コピー先の配列のサイズは、コピーしたデータの量まで自動的に増加します (後者が配列のサイズを超える場合)。
データ型と構成・戻り値
bool ArrayCopy(①,②,③,④,⑤);
戻り値は、コピーした要素数を返します。
引数 [5]
ArrayCopy関数は 5個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | dst_array[] | void& | - | - | コピー先の配列。 |
② | src_array[] | const void& | - | - | コピー元の配列。 |
③ | dst_start | int | - | 0 | コピー先 配列の開始インデックス。 |
④ | src_start | int | - | 0 | コピー元 配列の開始インデックス。 |
⑤ | count | int | WHOLE_ARRAY | コピーする要素の数。「WHOLE_ARRAY」は配列全体がコピーされます。 |
使用例
ArrayCopy関数による配列のコピー
コピー先の配列へコピー元の配列をそのままコピーします。
コード
// ArrayCopy関数による配列のコピー
#property strict
void OnInit() {
int d_arr[] ={1,2,3}; // コピー先の配列
int s_arr[4]={16,31,19,3}; // コピー元の配列
int e=ArrayCopy(d_arr, s_arr); // コピー&ペースト
Print("コピー先の配列:{",d_arr[0],",",d_arr[1],",",d_arr[2],",",d_arr[3],"}");
Print("コピー元の配列:{",s_arr[0],",",s_arr[1],",",s_arr[2],",",s_arr[3],"}");
Print("コピーの要素数:",e," 個");
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
元々、コピー先の配列にあった要素は消えてコピー元の要素で上書きされます。
![](https://naruhodo-mt4.com/wp-content/uploads/2022/12/P334arraycopy.jpg)