恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

MQL5のArrayReverse関数

MQL5のヘルプを眺めていたらArrayReverseという関数が目に留まりました。使ったことがなかったので、以下のコードで動作確認をしてみました。

void OnStart()
{
    int hoge[4] = {3, 5, 7, 9};
    for(int i = 0; i < 4; i++)
        printf("hoge[%d] = %d", i, hoge[i]);
    
    ArrayReverse(hoge);
    Print("ArrayReverse実行");

    for(int i = 0; i < 4; i++)
        printf("hoge[%d] = %d", i, hoge[i]);
}


実行結果は以下のとおりです。

hoge[0] = 3
hoge[1] = 5
hoge[2] = 7
hoge[3] = 9
ArrayReverse実行
hoge[0] = 9
hoge[1] = 7
hoge[2] = 5
hoge[3] = 3


使う場面が余り思い浮かばないのですが・・・、私のようにMQL4に慣れた人(チャートの右端にあるローソク足を0本目と数える人)がCopyBufferでインジ領域から配列にデータをコピーした場合に使うかもしれないなとぼんやり思いました。

ArraySetAsSeries関数との違い

ArraySetAsSeries関数との違いについては、ArrayReverse関数のヘルプに以下の記述がありました。

ArraySetAsSeries()関数は物理的に配列要素を移動するものではありません。代わりに、要素へのアクセスを時系列同様に変更するために、インデックスの方向を逆方向に変更するだけです。ArrayReverse()関数は、配列が「反転」されるように物理的に配列要素を移動します。