Références de tableaux - page 4

 
Je veux dire le tampon indicateur neuf, mais le sens est le même.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

TheXpert:

J'ai besoin d'un tableau normal sans copie

Le moyen est de jouer avec la structure du tableau. C'est-à-dire glisser un pointeur de série temporelle au lieu d'un pointeur de tableau, ainsi que des paramètres adéquats, pour que la structure pense que c'est bon.

aha, je l'ai !

et ensuite tirer une structure au lieu d'une référence de tableau à travers les fonctions...

la structure est en quelque sorte détachée du tableau, mais vous pouvez toujours obtenir des données à partir de

ArrayStore::double x[];
 
sergeev:
Bingo ! :)
 
Maintenant, il ne reste plus qu'à décoller :)
 
sergeev:
maintenant il ne reste plus qu'à décoller :)
Pouvez-vous sentir la perspective ? Théoriquement, vous pourriez faire la même chose avec n'importe quoi, y compris des objets.
 
TheXpert:
Pouvez-vous avoir une perspective ? Théoriquement, la même chose peut être faite à n'importe quoi, y compris les objets.

Je ne vous conseillerais pas d'avoir une perspective. :))

Je me suis assis avec ton problème pendant un moment, et quelque chose s'est éclairci.

Les deux premiers octets sont de type tableau (int).

les deux autres octets - pas clair.

le troisième deux - nombre d'octets dans l'élément de données (int)

   // int x[][15];     // == 0x5200 0100 0400  // здесь в каментах - первые три пары байт структуры
   // uint x[][15];    // == 0x5300 0100 0400
   // short x[][15];   // == 0x5000 0100 0200
   // ushort x[][15];  // == 0x4F00 0100 0200
   // char x[][15];    // == 0x4D00 0100 0100

   // uchar x[][15];   // == 0x4E00 0100 0100

   // long x[][15];    // == 0x5500 0100 0800
   // ulong x[][15];   // == 0x5600 0100 0800

   // double x[][15];  // == 0x5800 0100 0800
   // datetime x[][15];// == 0x5400 0100 0800


Puis il y a quatre [ulong][ulong][ulong][ulong][ulong][ulong] d'affilée.

puis la taille du tampon réservé.

et ensuite un pointeur de tampon (je n'ai pas encore vérifié).

le reste n'est pas clair, peut-être une réserve, mais ce n'est pas certain.

 

Oui. Mais c'est si tu exclues memcpy.

Avant cela, il faut vérifier si la copie interne de tableau est plus rapide que memcpy.

 
MetaDriver:

Je me suis assis avec ton problème pendant un moment, quelque chose s'est éclairci.

Oh, mes couteaux à vous, je commence juste à creuser.
 
sergeev:

Oui. Mais c'est si tu exclues memcpy.

Avant cela, il faut vérifier si la copie interne de tableau est plus rapide que memcpy.

Oui, nous devrions. Si memcpy est comparable à la copie d'un tableau de disons 500.000, il n'y a probablement aucun intérêt.
 

MetaDriver:

une confusion supplémentaire, peut-être une réserve, mais pas une certitude

Il devrait également y avoir un drapeau AsSeries et peut-être d'autres.