MQL5参考数组函数ArrayInsert 

ArrayInsert

从指定索引开始,将来自源数组的指定元素数量插入到接收数组。

bool  ArrayInsert(
   void&        dst_array[],          // 接收数组
   const void&  src_array[],          // 源数组
   uint         dst_start,            // 即将插入的接收方数组索引
   uint         src_start=0,          // 即将复制的源数组索引
   uint         count=WHOLE_ARRAY     // 即将插入的元素数量
   );

参数

dst_array[]

[in][out]  应该添加的元素的接收数组。

src_array[]

[in]  即将添加的元素的源数组。

dst_start

[in]  从源数组插入元素的接收数组中的索引。

src_start=0

[in]  接收数组的索引,从源数组插入元素。

count

[in]  从源数组中添加的元素的数量。WHOLE_ARRAY表示从指定索引到数组结束的所有元素。

返回值

如果成功返回true,否则返回false。若要获得错误信息,请调用GetLastError()函数。可能错误:

  • 5052 – ERR_SMALL_ARRAY(start和/或count参数被错误设置或src_array[] 源数组为空),
  • 5056 – ERR_SERIES_ARRAY(该数组不能更改,指标缓冲区),
  • 4006 – ERR_INVALID_ARRAY(不允许自复制,或数组类型不同,或具有包含类对象或析构结构的固定大小数组),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS(数组不包含POD结构,表示不可能进行简单复制),
  • 当在ArrayRemove()函数描述中提供了更改dst_array[]接收数组大小时发生的错误。

 

注意

如果函数用于固定大小的数组,则dst_array[]接收数组本身的大小不变。从dst_start位置开始,接收数组的元素向右移动(最后一个counts元素“脱离”),而从源数组复制的元素则取而代之。

您不能将元素插入到由SetIndexBuffer()函数指定为指标缓冲区的动态数组中。对于指标缓冲区,所有更改大小的操作都通过程序端的执行子系统来完成。

在源数组中,元素从src_start索引开始复制。源数组大小保持不变。将要添加到接收数组中的元素不会链接到源数组元素中。这意味着任何两个数组中元素的后续更改都不会反映在第二个数组中。

例如:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 声明固定大小数组并填充值
   int array_dest[10];
   for(int i=0;i<10;i++)
     {
      array_dest[i]=i;
     }
   //--- 源数组 
   int array_source[10];
   for(int i=0;i<10;i++)
     {
      array_source[i]=10+i;
     }
//--- 在插入元素之前显示数组
   Print("Before calling ArrayInsert()");
   ArrayPrint(array_dest);
   ArrayPrint(array_source);
//--- 插入源数组的3个元素,显示接收数组的新集合
   ArrayInsert(array_dest,array_source,4,0,3);
   Print("After calling ArrayInsert()");
   ArrayPrint(array_dest);
/*
  Execution result
   Before calling ArrayInsert()
   0 1 2 3 4 5 6 7 8 9
   After calling ArrayInsert()
   0 1 2 3 10 11 12 7 8 9
*/

另见

ArrayRemove ArrayCopyArrayResizeArrayFree