Как создать динамический двумерный массив?

 

Добрый день, уважаемые участники форума.

Подскажите как быть в mql5 с динамическими двумерными массивами? Как объявить и работать с ними?

Например: в  скрипте описываем вектор x[1,m] и вектор y[1,n], хочу перемножить x на y чтобы в итоге получилась двумерная матрица размерности A[m,n]

Если явно прописывать размерности m и n в программе, то получатся статические массивы, но я хочу, чтобы прога была более универсальной, и размерности m и n считывала откуда-нибудь из файла, т.е. заранее мы не будем знать сколько нам надо памяти под все это дело, с описанием x[] и y[] это понятно, а как описать A[][] в динамическом варианте?

Или к примеру по известным A и y найти x из уравнения Ax=y методом Гаусса, ну т.е. описать это в общем случае чтобы матрица A была полностью динамической?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Единственный выход, который я знаю - класс, работающий с массивом одномерных массивов, так как во втором измерении двумерного массива размерность изменять нельзя.

 
Briarius:

Добрый день, уважаемые участники форума.

Подскажите как быть в mql5 с динамическими двумерными массивами? Как объявить и работать с ними?

Например: в  скрипте описываем вектор x[1,m] и вектор y[1,n], хочу перемножить x на y чтобы в итоге получилась двумерная матрица размерности A[m,n]

Если явно прописывать размерности m и n в программе, то получатся статические массивы, но я хочу, чтобы прога была более универсальной, и размерности m и n считывала откуда-нибудь из файла, т.е. заранее мы не будем знать сколько нам надо памяти под все это дело, с описанием x[] и y[] это понятно, а как описать A[][] в динамическом варианте?

Или к примеру по известным A и y найти x из уравнения Ax=y методом Гаусса, ну т.е. описать это в общем случае чтобы матрица A была полностью динамической?

int N1=4;
int N2=5;
//---
struct One_dimension_array_structure
   {
      double Second_dimension_array[];
   };
//---
One_dimension_array_structure First_dimension_array[];
//---
ArrayResize(First_dimension_array, N1);
//---
for (int i=0; i<ArraySize(First_dimension_array); i++)
{
   ArrayResize(First_dimension_array[i].Second_dimension_array, N2);
}
//---
First_dimension_array[3].Second_dimension_array[2]=....

 
я делал структуру в которой было одно поле - динамический одномерный массив, затем объявлял динамический массив структур, компилятор не выдает ошибку, НО нужно проверять насколько правильно работают встроенные функции для работы с динамическими массивами
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
-Alexey-:

опередили меня ;)
 

Спасибо, за ответы.

Вариант с классом массива одномерных массивов, чуть позже нашел в документации в разделе по CArrayObj думаю что разработчикам нужно добавить ссылочку на код приведенный там в раздел Основы языка/Переменные с допиской как нужно создавать нормальные динамические массивы, а то немного в ступор вгоняет, хотя вариант со структурами для меня воспринимается проще. 

 
Briarius:

Добрый день, уважаемые участники форума.

Подскажите как быть в mql5 с динамическими двумерными массивами? Как объявить и работать с ними?

Например: в  скрипте описываем вектор x[1,m] и вектор y[1,n], хочу перемножить x на y чтобы в итоге получилась двумерная матрица размерности A[m,n]

Если явно прописывать размерности m и n в программе, то получатся статические массивы, но я хочу, чтобы прога была более универсальной, и размерности m и n считывала откуда-нибудь из файла, т.е. заранее мы не будем знать сколько нам надо памяти под все это дело, с описанием x[] и y[] это понятно, а как описать A[][] в динамическом варианте?

Или к примеру по известным A и y найти x из уравнения Ax=y методом Гаусса, ну т.е. описать это в общем случае чтобы матрица A была полностью динамической?

Причитайте новую статью Электронные таблицы на MQL5 , может что-то для себя найдёте.

Например в параграфе 5. Организация двумерного массива

Причина обращения: