Sort

Tri d'une matrice ou d'un vecteur en place.

void vector::Sort(
  func_name  compare_func=NULL // fonction de comparaison
  T          context             // paramètre de la fonction de tri personnalisé
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // fonction de comparaison
  T          context             // paramètre de la fonction de tri personnalisé
   );
 
void matrix::Sort(
  const int  axis,               // axe de tri
  func_name  compare_func=NULL   // fonction de comparaison
  T          context             // paramètre de la fonction de tri personnalisé
   );

Paramètres

axis

[dans]  L'axe selon lequel trier : 0 horizontal, 1 vertical.

func_name

[in]  Comparateur. Vous pouvez spécifier l'une des valeurs de l'énumération ENUM_SORT_MODE ou votre propre fonction de comparaison. Si aucune fonction n'est spécifiée, le tri croissant est utilisé.
 
Une fonction de comparaison personnalisée peut être de deux types :

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

Ici, T est le type de matrice ou de vecteur, et TContex est le type de la variable 'context' qui est passée comme paramètre supplémentaire à la méthode Sort.

context

[in] Paramètre facultatif supplémentaire pouvant être passé à une fonction de tri personnalisée.

Valeur de Retour

Aucune. Le tri est effectué en place, c'est-à-dire qu'il est appliqué aux données de la matrice/vecteur pour laquelle la méthode Sort est appelée.

Exemple

//+------------------------------------------------------------------+
//| Fonction de tri                                               |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme                               |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- remplit le vecteur
   vector v(100);
   //--- tri ascendant
   v.Sort(MyDoubleComparator);   // un paramètre supplémentaire avec la valeur '0' par défaut est utilisé ici
   Print(v);
   // tri descendant
   v.Sort(MyDoubleComparator,1); // le paramètre supplémentaire avec la valeur '1' est spécifié ici explicitement par l'utilisateur
   Print(v);
  }