Sort

Sortieren einer Matrix oder Vektors.

void vector::Sort(
  func_name  compare_func=NULL // Vergleichsfunktion
  T          context             // Parameter für die Nutzerfunktion zum Sortieren
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // Vergleichsfunktion
  T          context             // Parameter für die Nutzerfunktion zum Sortieren
   );
 
void matrix::Sort(
  const int  axis,               // Achse für die Sortierung
  func_name  compare_func=NULL   // Vergleichsfunktion
  T          context             // Parameter für die Nutzerfunktion zum Sortieren
   );

Parameter

axis

[in]  Die Achse, nach der sortiert werden soll: 0 ist horizontal, 1 ist vertikal.

func_name

[in]  Vergleichsfunktion. Sie können einen der Werte der Enumeration ENUM_SORT_MODE oder Ihre eigene Vergleichsfunktion angeben. Wenn keine Funktion angegeben wird, wird aufsteigend sortiert.
 
Eine eigene Vergleichsfunktion kann von zwei Typen sein:

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

Hier ist T der Typ der Matrix oder des Vektors, und TContex ist der Typ der "Kontext"-Variablen, die als zusätzlicher Parameter an die Sortiermethode übergeben wird.

context

[in] Zusätzlicher optionaler Parameter, der an eine nutzerdefinierte Sortierfunktion übergeben werden kann.

Rückgabewert

Keiner. Die Sortierung erfolgt innerhalb, d. h. sie wird auf die Daten der Matrix/des Vektors angewendet, für die die Sortiermethode aufgerufen wird.

Beispiel

//+------------------------------------------------------------------+
//| Sortierfunktion                                                  |
//+------------------------------------------------------------------+
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 Funktion                                            |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- Ausfüllen des Vektors
   vector v(100);
   //--- aufsteigend sortieren
   v.Sort(MyDoubleComparator);   // ein zusätzlicher Parameter mit dem Standardwert "0" wird hier verwendet
   Print(v);
   // absteigend sortieren
   v.Sort(MyDoubleComparator,1); // hier wird der zusätzliche Parameter '1' ausdrücklich vom Benutzer angegeben
   Print(v);
  }