如何在 for 循环中填充动态二维数组
How can I populate a dynamic two dimensional array in a for loop
这对很多人来说似乎微不足道,但它似乎让我变得更好,因为我一直无法弄清楚如何使用 ArrayResize()
(我认为这是非常必要的)来解决这个。
在下面的代码中,我想在 isBody
为 true
时填充 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;
}
}
}
这对很多人来说似乎微不足道,但它似乎让我变得更好,因为我一直无法弄清楚如何使用 ArrayResize()
(我认为这是非常必要的)来解决这个。
在下面的代码中,我想在 isBody
为 true
时填充 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;
}
}
}