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]  원본 배열 요소를 삽입할 때 시작하는 수신 배열의 인덱스.

카운트

[in]  원본 배열에서 추가할 요소의 수 WHOLE_ARRAY는 지정된 인덱스에서 배열의 끝까지 모든 요소를 의미합니다.

반환 값

성공하면 true를, 그렇지 않으면 false를 반환. 오류에 대한 정보를 가져오려면 GetLastError() 기능을 호출. 가능한 오류:

  • 5052 – ERR_SMALL_ARRAY (시작 또는 카운트 매개변수가 잘못 설정되었거나 src_array[] 원본 배열이 비어있습니다),
  • 5056 – ERR_SERIES_ARRAY (배열을 변경할 수 없습니다, 지표 버퍼),
  • 4006 – ERR_INVALID_ARRAY (자체에 대한 복사가 허용되지 않거나, 배열 유형이 다르거나 클래스 유형이 다르거나, 클래스 개체 또는 소멸자 구조를 포함하는 고정 크기 배열이 있습니다),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (배열에 POD 구조가 포함되어 있지 않으므로 단순 복사가 불가능합니다),
  • dst_array[] 수신 배열 크기를 변경하는 동안 ArrayRemove() 기능 설명에 오류가 발생했습니다.

 

참고

함수가 고정 크기 배열에 사용되는 경우 dst_array[] 수신 배열의 크기는 변경되지 않습니다. dst_start 포지션에서 시작하여 수신 배열 요소가 우측 ("꺼짐" 요소의 마지막 카운트)으로 이동되고, 원본 배열에서 복사된 요소가 그 자리를 대신합니다.

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("ArrayInsert() 호출 전");
   ArrayPrint(array_dest);
   ArrayPrint(array_source);
//--- 원본 배열에서 요소 3개를 삽입하고 수신 배열의 새 집합을 표시
   ArrayInsert(array_dest,array_source,4,0,3);
   Print("ArrayInsert() 호출 후 ");
   ArrayPrint(array_dest);
/*
  실행 결과
   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, ArrayCopy, ArrayResize, ArrayFree