Array-Referenzen - Seite 4

 
Ich meine Indikatorpuffer neun, aber die Bedeutung ist dieselbe.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

TheXpert:

Ich brauche ein normales Array ohne Kopieren

Die Möglichkeit besteht darin, an der Array-Struktur zu schrauben. D.h. einen Zeitreihenzeiger anstelle eines Array-Zeigers zusammen mit geeigneten Parametern einfügen, damit die Struktur denkt, dass es in Ordnung ist.

Aha, ich hab's!

und dann eine Struktur anstelle einer Array-Referenz über Funktionen hinweg ziehen...

die Struktur ist sozusagen vom Array losgelöst, aber Sie können immer noch Daten von

ArrayStore::double x[];
 
sergeev:
Bingo! :)
 
Jetzt müssen wir nur noch abheben :)
 
sergeev:
jetzt müssen wir nur noch abheben :)
Können Sie die Perspektive spüren? Theoretisch könnte man das Gleiche mit allem machen, auch mit Objekten.
 
TheXpert:
Können Sie sich einen Überblick verschaffen? Theoretisch kann das Gleiche mit allem gemacht werden, auch mit Gegenständen.

Ich würde Ihnen nicht raten, sich eine Perspektive zu verschaffen. :))

Ich habe mich eine Weile mit Ihrem Problem beschäftigt, und es hat sich etwas geklärt.

Die ersten beiden Bytes sind vom Typ Array (int).

die zweiten zwei Bytes - unklar.

die dritten beiden - Anzahl der Bytes im Datenelement (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


Dann gibt es vier [ulong][ulong][ulong][ulong][ulong] in einer Reihe.

dann die Größe des reservierten Puffers.

und dann einen Pufferzeiger (habe es noch nicht überprüft).

der Rest ist unklar, vielleicht eine Reserve, aber nicht sicher

 

Ja. Aber nur, wenn Sie memcpy ausschließen.

Vorher lohnt es sich zu prüfen, ob das interne Kopieren von Arrays überhaupt schneller ist als memcpy

 
MetaDriver:

Ich habe mich eine Weile mit deinem Problem beschäftigt, und es hat sich etwas geklärt.

Oh, meine Knicks für dich, ich fange gerade an zu graben.
 
sergeev:

Ja. Aber nur, wenn Sie memcpy ausschließen.

Vorher lohnt es sich zu prüfen, ob das interne Kopieren von Arrays überhaupt schneller ist als memcpy

Ja, das sollten wir. Wenn memcpy vergleichbar ist mit dem Kopieren eines Arrays von, sagen wir, 500.000, dann hat das wahrscheinlich keinen Sinn.
 

MetaDriver:

weitere Verwirrung, möglicherweise eine Reserve, aber keine Gewissheit

Es sollte auch ein AsSeries-Flag und möglicherweise einige andere geben.
Grund der Beschwerde: