Русский

Справочник MQL4 Операции с массивами ArrayCopy

ArrayCopy

Производит копирование одного массива в другой.

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );

Параметры

dst_array[]

[out]  Массив-приемник.

src_array[]

[in]  Массив-источник.

dst_start=0

[in]  Начальный индекс для приемного массива. По умолчанию, стартовый индекс - 0.

src_start=0

[in]  Начальный индекс для исходного массива. По умолчанию, стартовый индекс - 0.

count=WHOLE_ARRAY

[in]  Количество элементов, которые нужно скопировать. По умолчанию копируется весь массив (count=WHOLE_ARRAY).

Возвращаемое значение

Возвращает количество скопированных элементов.

Примечание

Если count<=0 либо count>src_size-src_start, то копируется весь остаток массива. Массивы копируются слева направо. Для серийных массивов правильно переопределяется стартовая позиция с учетом копирования слева направо. Если копируется массив сам в себя, то результат неопределен.

Если массивы разных типов, то при копировании производится попытка преобразования каждого элемента исходного массива к типу приемного массива. Строковый массив можно скопировать только в строковый массив. Массивы классов и структур, содержащих объекты, требующие инициализации, не копируются. Массив структур можно скопировать только в массив того же самого типа.

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

Пример:

void OnStart()
  {
//---
   int src_data[10];
   for (int i=0; i<ArraySize(src_data); i++) src_data[i]=i;
   int dst_data[];
   //--- копируем данные из массива src_data[] в массив dst_data[]
   ArrayCopy(dst_data,src_data,0,0,WHOLE_ARRAY);
   //--- вывод скопированных данных
   PrintFormat("Copied array size=%d",ArraySize(dst_data));
   for (int i=0; i<ArraySize(dst_data); i++) PrintFormat("index=%d, value=%d",i,dst_data[i]);
  }