Операции с массивами

 

Здравствуйте !

Я довольно часто сталкиваюсь с необходимостью сдвига или переворота массивов, возможно кто то также часто использует такие операции ?

Для динамического массива нет необходимости переворота данных, достаточно изменить направление (ArraySetAsSeries) , но вот с статическим массивом так не получиться.

Решения типа:

for (int y = 0; y < ArraySize(Arr_0); y++)  Arr_0[y] = Arr_1[ArraySize(Arr_1) - 1 - y]; 

или

for (int y = ArraySize(Arr) - 1; y > 0; y--) Arr[y] = Arr[y - 1];

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

 

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

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Almirian:

Здравствуйте !

Я довольно часто сталкиваюсь с необходимостью сдвига или переворота массивов, возможно кто то также часто использует такие операции ?

Для динамического массива нет необходимости переворота данных, достаточно изменить направление (ArraySetAsSeries) , но вот с статическим массивом так не получиться.

Решения типа:

for (int y = 0; y < ArraySize(Arr_0); y++)  Arr_0[y] = Arr_1[ArraySize(Arr_1) - 1 - y]; 

или

for (int y = ArraySize(Arr) - 1; y > 0; y--) Arr[y] = Arr[y - 1];

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

 

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

Сдвиг можно быстро осуществить копированием памяти. В MQL5 для этого есть функция ArrayCopy, позволяющая работать не только с двумя, но и с одним массивом.