Извините конечно за вопрос:"но для чего он нужен ?"
Фундаментально! Должно быть в некоторых ситуациях очень полезно!
Вот бы пару примеров для демонстрации достоинств и лучшего понимания как это применять.
Вот бы пару примеров для демонстрации достоинств и лучшего понимания как это применять.
azfaraon:
Извините конечно за вопрос:"но для чего он нужен ?"
Динамические массивы нужны в основном для экономии ОЗУ.
Для разных задач можно формировать массив с разным количеством ячеек.
Средствами MQL4 пока такое возможно сделать только в первом измерении массива.
Остальные измерения не поддаются изменению.
VBAG:
Фундаментально! Должно быть в некоторых ситуациях очень полезно!
Вот бы пару примеров для демонстрации достоинств и лучшего понимания
как это применять.
Фундаментально! Должно быть в некоторых ситуациях очень полезно!
Вот бы пару примеров для демонстрации достоинств и лучшего понимания
как это применять.
Вот для отладки библиотеки скрипт сделал. Попробуйте разобраться.
//+-----------------------------------------------------------------------------------+ //| Checking_Dynamic_Arrays.mq4 | //| Copyright © Zhunko | //|08.01.2008 zhunko@mail.ru | //+-----------------------------------------------------------------------------------+ //| Скрипт для контроля работоспособности библиотеки функций динимических массивов. | //+-----------------------------------------------------------------------------------+ #property copyright "Copyright © Zhunko" #property link "zhunko@mail.ru" #property show_inputs #import "ZH_Dynamic_Arrays_Lib.ex4" double DoubleArrayDynamicDimension3 (bool Write_Read, bool CheckingERROR, bool PRINT, int SizeDimension_0, int SizeDimension_1, int SizeDimension_2, int Cell_0, int Cell_1, int Cell_2, double Value, double Array[]); #import extern bool Write_Read = false; extern int Cell_0 = 0; extern int Cell_1 = 0; extern int Cell_2 = 0; extern int Cell_3 = 0; extern int SizeDim_0 = 10000; extern int SizeDim_1 = 100; extern int SizeDim_2 = 9; extern int SizeDim_3 = 1; //---- int a, b, c, d, n; // Переменые для циклов. string str1, str2; double Array[]; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { datetime time; double Value; //---- if (Write_Read == false) { ArrayResize (Array, SizeDim_0 * SizeDim_1 * SizeDim_2 /* SizeDim_3*/); time = TimeLocal(); for (a = 0; a < SizeDim_0 * SizeDim_1 * SizeDim_2 * SizeDim_3; a++) Array[a] = a; str1 = TimeToStr (TimeLocal() - time, TIME_MINUTES|TIME_SECONDS); Comment ("Время работы одномерного массива = ", str1); // Контроллируем запись. time = TimeLocal(); for (a = 0, n = 0; a < SizeDim_0; a++) for (b = 0; b < SizeDim_1; b++) for (c = 0; c < SizeDim_2; c++) { Value = Array[SizeDim_1 * SizeDim_2 * a + SizeDim_2 * b + c]; // Value = DoubleArrayDynamicDimension3 (Write_Read, false, false, SizeDim_0, SizeDim_1, SizeDim_2, a, b, c, Value, Array); // Alert ("Array[", n, "] = ", IntArrayDynamicDimension3 (Write_Read, false, false, SizeDim_0, SizeDim_1, SizeDim_2, a, b, c, Value, Array)); } str2 = TimeToStr (TimeLocal() - time, TIME_MINUTES|TIME_SECONDS); Comment ("Время работы одномерного массива = ", str1, "\nВремя работы динамического массива = ", str2); // Comment (DoubleArrayDynamicDimension3 (Write_Read, false, false, SizeDim_0, SizeDim_1, SizeDim_2, Cell_0, Cell_1, Cell_2, Value, Array)); } else { time = TimeLocal(); for (a = 0, n = 0; a < SizeDim_0; a++) for (b = 0; b < SizeDim_1; b++) for (c = 0; c < SizeDim_2; c++, n++) { Array[SizeDim_1 * SizeDim_2 * a + SizeDim_2 * b + c] = n; // DoubleArrayDynamicDimension3 (Write_Read, false, false, SizeDim_0, SizeDim_1, SizeDim_2, a, b, c, n, Array); } str1 = TimeToStr (TimeLocal() - time, TIME_MINUTES|TIME_SECONDS); Comment ("Время работы динамического массива = ", str1); // Контроллируем запись. time = TimeLocal(); for (a = 0; a < SizeDim_0 * SizeDim_1 * SizeDim_2; a++) { Value = Array[a]; // Alert ("Array[", a, "] = ", Array[a]); } str2 = TimeToStr (TimeLocal() - time, TIME_MINUTES|TIME_SECONDS); Comment ("Время работы динамического массива = ", str1, "\nВремя работы одномерного массива = ", str2); } //---- return(0); } //+------------------------------------------------------------------+
Спасибо. Обязательно на досуге буду изучать.
Что тут скажеш очень много светлых голов разбивается о стену непонимания. Я вот например не понимаю зачем сушить голову универсальными вещами когда очень часто и очень многое можно решить просто найдя какой нибудь изящный выход.
PS с уважением к титанической проделанной работе.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ZH_Dynamic_Arrays_Lib:
Author: Vadim Zhunko