Sort

행렬 또는 벡터를 제자리에 정렬합니다.

void vector::Sort(
  func_name  compare_func=NULL // 비교 함수
context // 사용자 지정 정렬 함수의 매개변수
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // 비교함수
context // 사용자 지정 정렬 함수의 매개변수
   );
 
void matrix::Sort(
  const int  axis,               // 정렬을 위한 축
  func_name  compare_func=NULL   // 비교함수
context // 사용자 지정 정렬 함수의 매개변수
   );

매개 변수

axis

【in】 정렬할 축: 0은 수평, 1은 수직입니다.

func_name

[in]  Comparator. 다음값 중 하나를 지정할 수 있습니다. ENUM_SORT_MODE 열거 또는 자신의 비교 함수. 함수를 지정하지 않으면 오름차순 정렬이 사용됩니다.
 
사용자 지정 비교 함수는 두 가지 유형이 될 수 있습니다.

  • int comparator(T x1,T x2)
  • int comparator(T x1,T x2,TContext context)

여기서 T는 행렬 또는 벡터의 유형이고 TContex는 Sort 메서드에 추가 매개 변수로 전달되는 'context' 변수의 유형입니다.

context

【in】 사용자 지정 정렬 함수에 전달할 수 있는 추가적인 선택적 매개 변수입니다.

반환값

None. 정렬은 제자리에서 수행됩니다. 즉, Sort 메서드가 호출되는 행렬/벡터의 데이터에 적용됩니다.

//+------------------------------------------------------------------+
//| Sort function                                               |
//+------------------------------------------------------------------+
int MyDoubleComparator(double x1,double x2,int sort_mode=0)
  {
   int res=x1<x2 ? -1 : (x1>x2 ? 1 : 0);
   return(sort_mode==0 ? res : -res);
  }
//+------------------------------------------------------------------+
//| Script start function                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- 벡터 채우기
   vector v(100);
   //--- 오름차순 정렬
   v.Sort(MyDoubleComparator);   // 기본값이 '0'인 추가 매개변수가 여기에 사용됩니다.
   Print(v);
   // 내림차순 정렬
   v.Sort(MyDoubleComparator,1); // 여기서 추가 매개변수 '1'은 사용자가 명시적으로 지정합니다.
   Print(v);
  }