2018年10月14日日曜日

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

CArrayObjInsert()Total 以上の値を指定したらどのようになるかやってみました。

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

1
2
3
4
5
6
7
8
9
10
11
// 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

  1. そして、ソースコードも読めるので 
?