Sort

Ordina una matrice o un vettore sul posto.

void vector::Sort(
  func_name  compare_func=NULL // funzione di confronto
  T          context             // parametro per la funzione di ordinamento personalizzata
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // funzione di confronto
  T          context             // parametro per la funzione di ordinamento personalizzata
   );
 
void matrix::Sort(
  const int  axis,               // asse per l'ordinamento
  func_name  compare_func=NULL   // funzione di confronto
  T          context             // parametro per la funzione di ordinamento personalizzata
   );

Parametri

axis

[in] L'asse lungo il quale ordinare: 0 è orizzontale, 1 è verticale.

func_name

[in] Comparatore. È possibile specificare uno dei valori dell'enumerazione ENUM_SORT_MODE o della propria funzione di confronto. Se non viene specificata alcuna funzione, viene utilizzato l'ordinamento ascendente.
 
Una funzione di confronto personalizzata può essere di due tipi:

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

Qui T è il tipo di matrice o vettore, e TContex è il tipo della variabile 'context' che viene passata come parametro aggiuntivo al metodo Sort.

context

[in] Parametro opzionale aggiuntivo che può essere passato ad una funzione di ordinamento personalizzata.

Valore Restituito

Nessuno. L'ordinamento viene eseguito sul posto, cioè viene applicato ai dati della matrice/vettore per il quale viene chiamato il metodo Sort.

Esempio

//+------------------------------------------------------------------+
//| 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()
  {
   //--- riempire il vettore
   vector v(100);
   //--- ordinamento ascendente
   v.Sort(MyDoubleComparator);   // viene utilizzato un parametro aggiuntivo con il valore predefinito '0'
   Print(v);
   // ordinamento decrescente
   v.Sort(MyDoubleComparator,1); //qui il parametro aggiuntivo '1' è esplicitamente specificato dall'utente
   Print(v);
  }