voidOnStart()
{
int a[];
int size=5; // размер массиваbool flag=true; // флаг направления индексацииArraySetAsSeries(a,flag); // зададим направление индексацииArrayResize(a,size); // зададим размер массива//---for(int i=0;i<size;i++) // задаём значения и распечатываем массив
a[i]=size-i; // 54321Print("[",a[0],"][",a[1],"][",a[2],"][",a[3],"][",a[4],"]");
//---ArrayResize(a,size-1); // уменьшаем размер 5432ArraySetAsSeries(a,!flag); // меняем направление индексации 2345ArrayResize(a,size); // возвращаем в исходный размер 2345хArraySetAsSeries(a,flag); // возвращаем в исходную индексацию х5432
a[0]=6; // задаём "пустому" нулевому данному значение//---Print("[",a[0],"][",a[1],"][",a[2],"][",a[3],"][",a[4],"]");
// в результате получаем 64321 вместо нужного 65432
}
也请给裁谈会写信说明此事。就像 "不是所有评论中的东西都可以在测试器中选择"。
不,是反弹。我打开了两个终端--Alpari,和MK,来回切换,但在后者中,我忘了将欧元兑英镑加入市场概览。
我试图在脚本中创建一个数组,其行为就像一个指标系列。也就是说,当一个新条目出现时,整个数组被后移,新条目被打到一个空位置。
正如他们所说,为什么?
也许我搞错了,但这是我想到的第一件事--语言优化中的另一个错误。
HZZY我也请那些想用循环来转移数据的朋友不要费心了。 这对5...100...1000...的数组很好用,但对更大的数组 就不行了。
我试图在脚本中创建一个数组,其行为就像一个指标系列。也就是说,当一个新条目出现时,整个数组被后移,新条目被打到一个空位置。
正如他们所说,为什么?
如果我们采用CArrayInt类,并在其中插入数据?
我希望能够通过参数传递数组,而数组本身在类中是私有的。
同样,在我的记忆中,这种方法是在循环中从事数据的转移,而且速度相当慢。
我试图在脚本中创建一个数组,其行为就像一个指标系列。也就是说,当一个新条目出现时,整个数组被后移,新条目被打到一个空位置。
正如他们所说,为什么?
也许我搞错了,但这是我想到的第一件事--语言优化中的另一个错误。
HZZY我也请那些想用循环来转移数据的朋友不要费心了。 这对5...100...1000...的数组很好用,但对更大的数组就不行了。
至于 "ZZI":你的大小调整不会给你带来内存碎片?
我不知道mql5中还有什么其他函数(分配内存)。
HH而据我理解,阵列的方向也是纯粹的虚拟的东西。
ZZY 显然,你要做的不是内存,而是地址空间的虚拟化。而且这也拖慢了工作进度,毕竟直接访问更快。
我希望能够通过参数传递数组,而数组本身在类中是私有的。
同样,在我的记忆中,这种方法只是为了在一个循环中转移数据,这是很慢的。
我将不得不考虑改进阵列类(对我来说)。
是的,在零位上的虚拟插入将是很好的。但不是为了真正地移动数据,否则就会很长,效率很低。
总之,不能直接用内存工作是很糟糕的,它有很好的虚拟化加速功能,如果你用单元地址而不是数组寻址,甚至C++的速度也要快1.5倍。
我试图在脚本中创建一个数组,其行为就像一个指标系列。也就是说,当一个新条目出现时,整个数组被后移,新条目位于零的位置。
ZZZY我请那些想建议按周期移动数据的同志不要担心,这个选项对5...100...1000...的数组很有效,但在更大的数组中是不能接受的。
但我可以建议不要移动整个阵列吗?:)
动态数组,新数据被写入末端,大小被改变/记忆,AsSeries标志只改变索引。
对于正常的顺序,它是数组的N个元素,对于 "串行 "的大小-N-1。