Скачать MetaTrader 5

Про многомерные массивы с рангами измерений зависящих от старшего индекса

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
У тебя Linux? Узнай, как установить на нее MetaTrader!
ivan
505
ivan 2011.02.05 19:01 

Хотелось бы иметь возможность работать со структурами типа A[I,i], где размерность индекса i зависит от I:

A[0,0] A[0,1] A[0,2]

A[1,0] A[1,1]

A[2,0] A[2,1] A[2,2] A[2,3] A[2,4] A[2,5] ... A[2, 100000]

A[3,0]

...

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

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

Есть ли элегантное решение в рамках mql4? Кроме "ручками-ручками!"?

Буду рад, если решение уже появлялось на форуме и мне укажут на него.

Victor Nikolaev
Модератор
14523
Victor Nikolaev 2011.02.05 19:06  
qomment:

Хотелось бы иметь возможность работать со структурами типа A[I,i], где размерность индекса i зависит от I:

A[0,0] A[0,1] A[0,2]

A[1,0] A[1,1]

A[2,0] A[2,1] A[2,2] A[2,3] A[2,4] A[2,5] ... A[2, 100000]

A[3,0]

...

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

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

Есть ли элегантное решение в рамках mql4? Кроме "ручками-ручками!"?

Буду рад, если решение уже появлялось на форуме и мне укажут на него.


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

Комбинатор
15931
Комбинатор 2011.02.05 19:11  

Например, забивать размер данных в первую ячейку., типа Array[0][0] = size0;

Ну а выделять память естественно по максимальной нужной длине.

Vinin:

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

Как вариант, но очень негибко.

Victor Nikolaev
Модератор
14523
Victor Nikolaev 2011.02.05 19:26  
TheXpert:

Например, забивать размер данных в первую ячейку., типа Array[0][0] = size0;

Ну а выделять память естественно по максимальной нужной длине.

Как вариант, но очень негибко.


Так памяти может и не хватить просто
ivan
505
ivan 2011.02.05 19:40  
Спасибо. Кажется это и называется "ручками". При этом если, упаси Боже, нужно пополнить (или сократить) n-ю строку, надо пересчитывать всю адресацию...
ivan
505
ivan 2011.02.05 19:56  
А в MT5 такое наверное возможно?
Alexey Subbotin
4998
Alexey Subbotin 2011.02.05 20:20  
qomment:
А в MT5 такое наверное возможно?
классы вам в руки:)
Alexey Subbotin
4998
Alexey Subbotin 2011.02.05 20:21  
Есть базовый класс динамического массива, сделайте массив одномерных массивов, и будет вам Щастье.
ivan
505
ivan 2011.02.05 20:31  
Спасибо, видимо это оно. Осталось "всего ничего" - перейти на MT5, мне и брокеру :)
vb
315
vb 2011.02.05 20:39  
Есть еще один вариант. Если MQL4 поддерживает массив строк, то использовать его. В каждой строке определенное количество элементов - число, все количество-несколько чисел. Последние ненужные - не использовать. Т.о. получится 2х мерный массив. Только, придется писать функцию, делающую из набора символов-цифр число.
Victor Nikolaev
Модератор
14523
Victor Nikolaev 2011.02.05 20:47  
-Aleksey-:
Есть еще один вариант. Если MQL4 поддерживает массив строк, то использовать его. В каждой строке определенное количество элементов - число, все количество-несколько чисел. Последние ненужные - не использовать. Т.о. получится 2х мерный массив. Только, придется писать функцию, делающую из набора символов-цифр число.

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