Ссылки на массив - страница 4

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

TheXpert:

Мне нужен нормальный массив без копирования

способ -- захачить структуру массива. Т.е. подсунуть указатель таймсерии вместо указателя массива вместе с адекватными параметрами, чтобы структура думала что все ок.

аха, прояснилось!

и потом тягать по функциям не ссылку на массив массив, а структуру...

структура как бы оторвана от массива, но при этом можно получать данные из

ArrayStore::double x[];
 
sergeev:
Бинго! :)
 
теперь осталось со всем этим взлететь :)
 
sergeev:
теперь осталось со всем этим взлететь :)
Перспективу чуешь? Теоретически то же самое можно творить с чем угодно, в том числе и с объектами.
 
TheXpert:
Перспективу чуешь? Теоретически то же самое можно творить с чем угодно, в том числе и с объектами.

Перспективу чуять не советую. :))

Посидел немного с твоей задачкой, кое чего прояснилось.

первые два байта - тип массива  (int)

вторые два - пока неясно

два третьих - количество байт в элементе данных (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


потом идут подряд четыре размерности [ulong][ulong][ulong][ulong]

потом размер зарезервированного буфера

потом вроде указатель на буфер (пока не проверял)

дальше непонятки, возможно резерв, но не факт

 

ага. но это если исключить memcpy

перед этим стоит вообще проверить - насколько внутреннее копирование массивов быстрее memcpy

 
MetaDriver:

Посидел немного с твоей задачкой, кое чего прояснилось.

О, мои вам книксены, как раз начинаю копать.
 
sergeev:

ага. но это если исключить memcpy

перед этим стоит вообще проверить - насколько внутреннее копирование массивов быстрее memcpy

Да, надо будет. Если memcpy сравнимо с копированием массива скажем в 500 000 то смысла нет наверное.
 

MetaDriver:

дальше непонятки, возможно резерв, но не факт

Еще должен быть флаг AsSeries и возможно еще какие-то.