如何在 for 循环中填充动态二维数组

How can I populate a dynamic two dimensional array in a for loop

这对很多人来说似乎微不足道,但它似乎让我变得更好,因为我一直无法弄清楚如何使用 ArrayResize()(我认为这是非常必要的)来解决这个。

在下面的代码中,我想在 isBodytrue 时填充 ar[][2]。我怎样才能做到这一点。

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;
      }
   }
}