Calcolo di un singolo array durante l'ottimizzazione - pagina 8

 
forexman77:

È soprattutto sulle classi, che per me sono una foresta oscura. Ma alcuni pensieri sono venuti fuori. Fate un array con date e numeri separatamente. Solo, come ottenere il numero di indice dove sono le date dopo l'ordinamento, cioè ottenere la i che è nella seconda dimensione?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

Ha fatto quanto segue:

datetime m1[215];
datetime m2[215];
double d[215][4];

m1[i]=Dat_DtTm;
m2[i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=0.0;
d[i][2]=f2;
d[i][3]=0.0;

ArraySort(m1,WHOLE_ARRAY,0,MODE_DESCEND);

for (int y=214;y>=0;y--)
   {
  
   for (int a=214;a>=0;a--)
   {
   if (m1[y]==m2[a])
   {
   d[y][1]=d[a][0];
   d[y][3]=d[a][2];
   Print("m1[y]=",m1[y],"d[y][1]=",d[y][1],"d[y][3]=",d[y][3],"y=",y);
   break;
   }
   }
   }
 
forexman77:

È soprattutto sulle classi, che per me sono una foresta oscura. Ma alcuni pensieri sono venuti fuori. Fate un array con date e numeri separatamente. Solo, come ottenere il numero di indice dove sono le date dopo l'ordinamento, cioè ottenere la i che è nella seconda dimensione?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

È molto più semplice di così. Supponiamo di avere un array di date, per esempio datetime m_date[4000] e un sacco di altri array di qualsiasi tipo: int, string, double ... e qualsiasi dimensione.

Tutti loro sono collegati in modo tale che i dati nell'i-esima riga di questi array corrispondono alla data m_date[ i ]. Avete bisogno di ordinare tutti questi array per data.

Sia m_dim il numero di righe in questi array (numero di date). Non useremo ArrayResize come operazione costosa, solo m_dim <= 4000, nel nostro esempio.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Ora dalla prima dimensione prendiamo la data e dalla seconda dimensione prendiamo l'indice degli array corrispondenti a questa data

 
Mislaid:

È molto più semplice di così. Supponiamo di avere un array di date, per esempio datetime m_date[4000] e un mucchio di altri array di qualsiasi tipo: int, string, double ... e qualsiasi dimensione

Tutti loro sono collegati in modo tale che i dati nell'i-esima riga di questi array corrispondono alla data m_date[ i ]. Avete bisogno di ordinare tutti questi array per data.

Sia m_dim il numero di righe in questi array (numero di date). Non useremo ArrayResize come operazione costosa, solo m_dim <= 4000, nel nostro esempio.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Ora dalla prima dimensione prendiamo la data e dalla seconda dimensione prendiamo l'indice degli array corrispondenti a questa data

Grazie! Ne farà uso.