0

我正在尝试使用 MQL 5 数组的存储。当我不使用 anyArrayResize()时,我收到错误:

double d [];
d[0] = 1;
for (int i = 0; i< ArraySize(d); i++)
   {
   Print(d[i]);

错误如下:

2018.03.26 13:17:25.379 2018.02.02 00:00:00   array out of range in 'testing.mq5' (69,2)

而当我使用时,ArrayResize()我会得到输出。

double d [];
ArrayResize(d,2);
d[0] = 1;
for (int i = 0; i< ArraySize(d); i++)
   {
   Print(d[i]);
   }

输出: 1

有效。但是,如果我尝试添加超出数组大小的数组元素,则会out of range出现错误。

我要实现的是数组必须在大小方面保持动态。
假设我给定的大小是2,在我的程序中,3需要添加数组元素,然后数组必须接受它。

我不能使用ArrayResize()它,因为它会消除我不希望发生的其他值。
请给我建议一个中间出路,这样我就可以在数组中输入任意数量的值,而不管它的大小。

4

1 回答 1

0

#include <Arrays\ArrayObj.mqh>适用于存储任何类的对象、ArrayInt整数ArrayDouble列表、双精度和浮点数列表。根据需要添加任意数量,只要您需要,您将永远不必调整大小或捕获数组之外的索引。

CArrayInt *integers;
OnInit(){integers=new CArrayInt();}
OnDeinit(int reason){delete(integers);}
OnTick(){
   integers.Add(0);integers.Add(1);integers.Add(2);
   int firstElem=integers.At(0); firstElem=integers[0];
   int lastElem=integers.At(integers.Total()-1);
   int totalElementsInTheList=integers.Total();
   integers.Delete(2); // delete element with index 2. deleting element that match with the object is not supported in basic API
}
于 2018-03-26T08:32:59.437 回答