template<typename T>
class A { protected:
A( T t ) : t( t ) {}
T t;
};
class B : A<int> {
B() : A<int>( 1 ) {} //'<' - member(s) initialization expected
};
voidOnStart()
{
int Kol_Kan=10; //Количество элементов для копированияdouble HI[]; //массив для хранения максимумов на интервалеdouble LO[]; //массив для хранения минимумов на интервалеCopyHigh(_Symbol,0,2,Kol_Kan,HI);//копируем значения максимумовCopyLow(_Symbol,0,2,Kol_Kan,LO); //копируем значения минимумовArrayResize(HI,Kol_Kan); //устанавливаем размер массиваArrayResize(LO,Kol_Kan);
int in_max=0; //индекс максимального значения в массивеint in_min=0;
in_max=ArrayMaximum(HI,WHOLE_ARRAY,0); //Находим индексы максимума и мин в массивах
in_min=ArrayMinimum(LO,WHOLE_ARRAY,0);
double hi_max; // максимальное значение цены double lo_min; // минимальное значение цены
hi_max=HI[in_max]; //Переносим значения максимумов и мин в переменные
lo_min=LO[in_min];
Alert(hi_max,"___",lo_min);
}
MT 4.OnTick()内的MathRand()随机数生成器。 在测试猫头鹰时,在相同的设置下再次运行时,会得到不同的结果。如果生成的数字影响到算法,这是很自然的。
在优化时,由于某种原因,我在第二次运行时得到了相同的结果,设置也相同。所以MathRand()在优化模式下不工作?
第二(我怕在这里犯错,我希望Alexander Puzanov 能纠正我的错误),如果程序员出于某种原因决定在动态数组 中添加一个索引为20的项目,不会发生什么坏事。数组将从这个维度出发,在那里写一个值,并将 "缺失 "的索引初始化为0值。
正是如此。为什么是 "零"?也许它应该是EMPTY_VALUE ?或 WRONG_VALUE ?
这种隐性赋值的问题正是它们的隐性性质--编译器引入了一些代码,一个程序员认为是这样的,而另一个可能认为是不同的。
另外,这也是无效的--并不总是需要立即初始化一个变量,而初始化一个大的数组,在一个循环中,会大大降低速度。
第三,没有 人可以阻止 程序员控制维度和使用的索引!这就是为什么我们的程序员可以控制维度。唯一不同的是,现在他是被迫 这样做的。)))
如果编译器自己跟踪一个数组的维度,那么没有一个类能够清理这个代码。效率很有可能下降。
同时,如果编译器不负责这项工作,程序员可以写一个类来完成这项工作,然后使用一个数组,在必要时可以用零来扩展和初始化。
在第二种情况下,灵活性更高。
因此,你提出的建议对许多情况来说也是一个很好的解决方案。但它可能会降低效率,这不是好事。
原则上,这是一个简单的例子,说明动态数组 通常应该如何填充。我已经很久没有用C语言写作了,我不记得了,但是在php中数组就是这样被填充的!一切都是合乎逻辑和可以理解的。如果我向一个数组添加一个元素(arr[] = x),数组会自动展开,这个元素会被添加到数组的末端。而且,我们不必自己把它拉出来,也不必自己指定元素的索引。但在这里,我们必须做出绝对不必要的动作。
区别很明显...
在我看来,这很奇怪,至少可以说))))。
编程语言分为严格类型和非严格类型。你的PHP、R和其他函数式语言都属于非严格类型的语言。在MQL或C#和Java等严格类型的语言中,不允许这种模糊的数据操作。而这是专门为程序员本身的安全而做的。严格的类型化意味着你的每一个过程都是极其具体的:"在数组中取一个索引为0的元素 "是一个具体而明确的过程,但你建议用 "从数组中取一些东西,并将其加入编译器决定首先返回的东西 "来代替它。- 你同意你不会在这上面走得太远。
当然,另一方面,我们希望有简单的高层结构,而不需要令人厌烦的数组大小和用户不断的重新排列。这正是标准库的作用。不使用基本的数组,而改用数组的类。例如,从0到16添加到CArrayInt数组中是这样的。
正如你所看到的,没有什么太自然的东西。而且不需要为当前的数组大小和其他重新安排而绞尽脑汁。一切都为你完成,在严格的打字范围内,你被邀请直接集中在用户任务上。这就是OOP的力量和意义。
未提供完整的录音。编译错误
我找不到我哪里错了。
任务是找到 一个区间的最大值 和最小值
ArrayMaximum(),ArrayMinimum() 中的参数顺序错误。
我找不到我哪里错了。
任务是找到 一个区间的最大值 和最小值
职能
CopyHigh(_Symbol,0,2,Kol_Kan,HI);//复制最大值的值
CopyLow(_Symbol,0,2,Kol_Kan,LO); //copy values of minima
已经调整了数组的大小。
这是不需要的
ArrayResize(HI,Kol_Kan); //设置数组大小。
ArrayResize(LO,Kol_Kan)。
Неправильный порядок аргументов в ArrayMaximum(), ArrayMinimum().
正是如此))。我在这里想...
职能
CopyHigh(_Symbol,0,2,Kol_Kan,HI);//复制最大值的值
CopyLow(_Symbol,0,2,Kol_Kan,LO); //copy values of minima
已经调整了数组的大小。
这是不需要的
ArrayResize(HI,Kol_Kan); //设置数组大小。
ArrayResize(LO,Kol_Kan)。
我会知道的,谢谢你。
而作者则是已经想通了。))
PabloEs:
正是如此。))我在这里想...