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