2018年10月14日日曜日

[MQL4] CArrayObj::Insert() に最大値以上の index を指定すると Add と同じ動作になる

[CArrayObj](https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayobj) の `Insert()` で `Total` 以上の値を指定したらどのようになるかやってみました。

結果は、「どんなに大きな値を指定しても最後に挿入される」でした。
エラーが返ってこない仕様なのでそして、ソースコードも読めるので、そうだろうとは思ってたけど、念の為。

```mq4
    // index 0〜9 の要素を追加
    for (int i = 0; i < 10; i++) {
        int value = (i % 2 == 0) ? i : i + 10;
        m_item_array.Add(new Item(value));
    }    
 
    Item* item = new Item(99);

    // index 99?に挿入
    // 実際は index 10 (最後)に挿入される
    m_item_array.Insert(item, 99);
```

`Item` 等の実装は以下のリンク先に掲載したものと同じです。

> 参考
> 
> [MQL4 で可変長配列を使用する方法 | Strategy of C](https://strategyofc.blogspot.com/2018/10/mql4.html)