Sort

就地针对矩阵或向量进行排序。

void vector::Sort(

  func_name  compare_func=NULL,  // 比较函数

  T          context             // 自定义排序函数的参数

   );



void matrix::Sort(

  func_name  compare_func=NULL   // 比较函数

  T          context             // 自定义排序函数的参数

   );



void matrix::Sort(

  const int  axis,               // 排序轴

  func_name  compare_func=NULL   // 比较函数

  T          context             // 自定义排序函数的参数

   );

参数

axis

[输入]  要排序的轴:0 是水平,1 是垂直。

func_name

[输入]  比较器。 您可以指定 ENUM_SORT_MODE 枚举值之一,或您自己的比较函数。 如果未指定函数,则采用升序排序。
 
自定义比较函数可以有两种类型:

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

此处 T 是矩阵或向量的类型,而传递给 Sort 方法的附加参数 TContex 则是作为“上下文关联”变量类型。

context

[输入] 可传递给自定义排序函数的其它可选参数。

返回值

无。 排序就地执行,即它应用于调用 Sort 方法的矩阵/向量的数据。

举例

//+------------------------------------------------------------------+

//| Sort 函数                                                         |

//+------------------------------------------------------------------+

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);

  }

//+------------------------------------------------------------------+

//| 脚本程序 start 函数                                                |

//+------------------------------------------------------------------+

void OnStart()

  {

   //--- 填充向量

   vector v(100);

   //--- 升序排序

   v.Sort(MyDoubleComparator);   // 此处使用了默认值为 “0” 的附加参数

   Print(v);

   // 降序排序

   v.Sort(MyDoubleComparator,1); // 此处的附加参数 “1” 是由用户显式指定的

   Print(v);

  }