如何解决如何在 for 循环中填充动态二维数组
这对很多人来说似乎微不足道,但它似乎让我变得更好,因为我一直无法弄清楚如何使用 ArrayResize()
(我认为这是非常必要的)来解决这个问题。
在下面的代码中,我想在 ar[][2]
为 isBody
时填充 true
。我怎样才能做到这一点。
int ar[][2];
void CheckBody() {
for (int i = 20; i >= 0; i--) {
if (isBody) {
int a = i + 1;
int b = i - 3*i;
// how to populate ar with [a,b] when isBody is true in this block
}
}
}
解决方法
试试下面的代码,它被编程为作为 EA 运行,但如果在指标中使用,可以轻松修改(您必须为 isBody
变量添加代码)。
#property strict
int ar[][2];
//+------------------------------------------------------------------+
//| Initialization function of the expert |
//+------------------------------------------------------------------+
int OnInit()
{
ArrayInitialize(ar,NULL);
ArrayResize(ar,1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Deinitialization function of the expert |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| "Tick" event handler function |
//+------------------------------------------------------------------+
void OnTick()
{
for(int i=20; i>=0; i--)
{
if(isBody)
{
if(ar[0][0]!=NULL) ArrayResize(ar,ArrayRange(ar,0)+1);
int a=i+1;
int b=i-3*i;
ar[ArrayRange(ar,0)-1][0]=a; ar[ArrayRange(ar,0)-1][1]=b;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。