我正在尝试使用MQL 5阵列的存储。当我没有使用任何ArrayResize()
时,我收到错误:
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()
,因为它会消除我不想发生的其他价值。
请注意,建议我中间出路,以便我可以在数组中输入任意数量的值而不管其大小。
答案 0 :(得分: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
}