【MQL4勉強プログラミング】ArrayCopy()関数で指定した配列を他の配列にコピー

ArrayCopy()関数は、指定した配列を他の配列にコピーするために使用します。

ArrayCopy()関数は、以下のように定義されています。

int ArrayCopy(
void& dst_array[],
const void& src_array[],
int dst_start=0,
int src_start=0,
int count=WHOLE_ARRAY
);

各引数の意味は、以下のとおりです。

  • void& dst_array[]
    コピー先の配列の配列名を指定します。
  • const void& src_array[]
    コピー元の配列の配列名を指定します。
  • int dst_start
    コピー先の配列における、コピーされる要素のインデックスの開始位置を指定します。
    標準では、「0」からコピーされます。
  • int src_start
    コピー元の配列における、コピーする要素のインデックスの開始位置を指定します。
    標準では、「0」からコピーを開始します。
  • int count
    コピーする要素の数を指定します。
    標準では、すべての要素がコピーされます。

戻り値

コピーされた要素の数を返します。

注意点

第五引数の「count」の値が「0」以下、又は、コピー元の配列のサイズよりも大きい場合は、すべての要素がコピーされます。

配列は、「左から右へ」(=インデックスが若いものから順に)コピーされます。したがって、時系列配列の場合は、コピー開始位置を調整する必要があります。

コピー元の配列とコピー先の配列とを同一にしてArrayCopy()関数を実行した場合の結果は定義されていません。

コピー元の配列の型とコピー先の配列の型が異なる場合は、ArrayCopy()関数は、コピー元の配列の要素の型を、コピー先の要素の型に変換しようと試みます。

string型の配列は、string型の配列に対してのみ、コピーすることができます。

初期化を必要とするオブジェクトを含むクラスや構造体の配列は、コピー元の配列とすることができません。

構造体の配列は、同じ型の配列に対してのみコピーされることができます。

クラスや構造体のメンバーを除く静的・動的配列の場合、コピー先の配列のサイズは、自動的にコピー元の配列のデータ量まで増加されます。