ArraySwap

동일한 유형의 두 동적 배열의 내용을 스왑. 다차원 배열의 경우 첫 번째 요소를 제외한 모든 차원의 요소 수가 일치해야 합니다.

bool  ArraySwap(
   void&  array1[],      // 첫 번째 배열
   void&  array2[]       // 두 번째 배열
   );

매개변수

array1[]

[in][out]  숫자 유형의 배열.

array2[]

[in][out]  숫자 유형의 배열.

반환 값

성공하면 true를, 그렇지 않으면 false를 반환. 이 경우, GetLastError()ERR_INVALID_ARRAY 에러 코드를 반환합니다.

참고

함수는 첫 번째 배열을 제외하고 유형이 동일하고 크기가 동일한 동적 배열을 허용합니다. 정수 유형의 경우 기호는 무시됩니다. 즉, char==uchar)

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 기능                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 시세를 저장할 배열
   double source_array[][8];
   double   dest_array[][8];
   MqlRates rates[];
//--- 현재 시간 프레임에 대한 최근 20개의 초 데이터를 얻습니다.
   int copied=CopyRates(NULL,0,0,20,rates);
   if(copied<=0)
     {
      PrintFormat("CopyRates(%s,0,0,20,rates) failed, error=%d",
                  Symbol(),GetLastError());
      return;
     }
//--- 복사된 데이터의 양에 대한 배열 크기 설정
   ArrayResize(source_array,copied);
//--- rate_array_1[] 배열을 rates[]의 데이터로 채움
   for(int i=0;i<copied;i++)
     {
      source_array[i][0]=(double)rates[i].time;
      source_array[i][1]=rates[i].open;
      source_array[i][2]=rates[i].high;
      source_array[i][3]=rates[i].low;
      source_array[i][4]=rates[i].close;
      source_array[i][5]=(double)rates[i].tick_volume;
      source_array[i][6]=(double)rates[i].spread;
      source_array[i][7]=(double)rates[i].real_volume;
     }
//--- source_array[] 및 dest_array[] 간에 데이터 스왑
   if(!ArraySwap(source_array,dest_array))
     {
      PrintFormat("ArraySwap(source_array,rate_array_2) failed, error code=%d",GetLastError());
      return;
     }
//--- 스왑 후 원본 배열이 0이 되었는지 확인
   PrintFormat("ArraySwap() done: ArraySize(source_array)=%d",ArraySize(source_array));
//--- dest_array[] 대상 배열의 데이터 표시
   ArrayPrint(dest_array);
  }

추가 참조

ArrayCopy, ArrayFill, ArrayRange, ArrayIsDynamic