【MQL4勉強プログラミング】ArrayCompare()関数で指定した2つの配列を比較!

ArrayCompare()関数は、指定した2つの配列を比較するために使用します。

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

int ArrayCompare(
const void& array1[],
const void& array2[],
int start1=0,
int start2=0,
int count=WHOLE_ARRAY
);

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

  • const void& array1[]
    比較したい配列の一方(=1番目の配列)を指定します。
  • const void& array2[]
    比較したい配列の他方(=2番目の配列)を指定します。
  • int start1
    1番目の配列において比較を開始する要素のインデックスを指定します。
    標準では「0」です。
  • int start2
    2番目の配列において比較を開始する要素のインデックスを指定します。
    標準では「0」です。
  • int count
    比較する要素の数を指定します。
    標準ではすべての要素(=WHOLE_ARRAY)を比較します。

戻り値

  • 1番目の配列が2番目の配列よりも小さい場合は「-1」を返します。
  • 1番目の配列と2番目の配列が等しい場合は「0」を返します。
  • 1番目の配列が2番目の配列よりも大きい場合は「1」を返します。
  • 異なる型の配列同士を比較していたり、第三引数や第四引数で配列の範囲外の要素をしていることによってエラーが生じた場合は、「-2」が返されます。

注意点

比較する2つの配列は、同じ型でなければなりません。

また、比較することができるのは、単純なものでなければならず、文字列を含む配列や、動的配列は比較することができません。

配列のサイズが異なり、一方の配列が他方の配列の忠実な一部である場合に、第五引数で「WHOLE_ARRAY」を指定した場合は、「0」が返されることはありません。

この場合には、2つの配列のサイズが比較され、1番目の配列のサイズが2番目の配列のサイズよりも小さければ「-1」を返し、1番目の配列のサイズが2番目の配列のサイズよりも大きければ「1」を返します。