//+------------------------------------------------------------------+int PeterArray(int &Arr[],constint val) // вариант Peter Konow
{
int deleted=0,q=0;
for(int a1=0; a1<ArraySize(Arr); a1++)
{
if(deleted)Arr[q]=Arr[q+deleted];
if(Arr[q]==val){deleted++; q--;} <-----------Выполнение этих операций занимает кучу времени.
q++;
}
ArrayResize(Arr,q);
return (q);
}
//+------------------------------------------------------------------+
不要取笑别人
甚至没有开始;-)
当有一个基准时,我甚至没有提到 "检查和"。
人们可以记住渐近论,通过渐近论最终估计出速度。
而这取决于输入的数据量、要删除的元素数量和它们的位置/分布(在现实中永远是均匀的)。
并认为可以/应该绘制图表。
目标当然不值得如此努力,但无论如何都要遵循这个方法。
我还可以继续写两三页 :-)
增加了旋转、暂停和热身选项(第一遍不计入)。
我增加了一个带有旋转、停顿和热身的变体(第一遍不考虑)。
很奇怪的是,许多例子不能正常使用结构...也许我不明白什么......
很奇怪的是,许多例子不能正常使用结构...也许我不明白什么......
摆脱结构的束缚,改用类的形式。他们在MQL中更容易工作。
很奇怪的是,许多例子不能正常使用结构...也许我不明白...
你是什么意思?我不知道你是什么意思。什么例子不对? 一切都对。
很奇怪的是,许多例子不能正常使用结构...也许我不明白什么......
这些函数不知道应该比较结构中的哪个字段。
该函数不知道要比较的是结构的哪个字段。
该功能是按字段进行比较的。其结果是由于某种原因删除了数组中的最后一个元素。
研究代码。
检查了你的代码。你做的一切都是对的。
我只是不明白为什么那条线占据了我大部分的时间。
如果没有这一行,代码的运行时间为2微秒。但没有它,你就无法做到这一点。
这可能不是最快的解决方案,但却是最简洁的解决方案之一。
SZY.你在写函数时犯了一个错误,由我解决。
我的功能不是
ArrayResize(Arr,q);
а
但还是要谢谢你。
该函数正在对字段进行比较。其结果是,由于某种原因,数组中的最后一个元素被删除。
当把一个元素分配给另一个元素时,即使用"="号时?
我注意到,最好是自己动手抄写。你不能依赖任何东西。