Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 47
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie dieses hier?
https://www.mql5.com/ru/code/9336
Die Frage bezog sich auf ein Array von Strukturen und die Sortierung nach Strukturfeldern.
Hat jemand eine ressourceneffiziente Sortierung eines Arrays von Strukturen nach jedem (nicht String) gegebenen Feld der Struktur getan?
Angenommen, es gibt eine Struktur mit den drei Feldern int, datetime und double, und es gibt ein Array, das mit Daten gefüllt ist, die aus dieser Struktur bestehen. In jeder Zelle des Arrays werden die Felder der Struktur ausgefüllt.
Wie kann man dieses Array nach einem dieser Felder sortieren?
Erstellen Sie das Array double[][2] und füllen Sie es wie { fieldvalue, arrayindex }. Sortieren mit dem Standard ArraySort (nach der ersten Änderung). Und dann müssen Sie die Strukturen im Array entsprechend den Indizes anordnen.
Ich wollte diese Methode umgehen. Ich dachte, vielleicht gibt es noch andere Möglichkeiten.
Warum sollte man sie umgehen? Schneller geht es nicht, denn die Sortierung erfolgt über eine eigene Funktion.
Warum sollte man sie umgehen? Schneller geht es nicht, da es sich um eine systemeigene Funktion handelt, die die Sortierung vornimmt.
Hat jemand eine ressourceneffiziente Sortierung eines Arrays von Strukturen nach jedem (nicht String) gegebenen Feld der Struktur getan?
Angenommen, es gibt eine Struktur mit den drei Feldern int, datetime und double, und es gibt ein Array, das mit Daten gefüllt ist, die aus dieser Struktur bestehen. In jeder Zelle des Arrays werden die Felder der Struktur ausgefüllt.
Wie kann man dieses Array nach einem dieser Felder sortieren?
Hallo, wenn Sie eine Art universelle Sortierfunktion benötigen, die ein Array mit komplexen Datentypen sortieren kann, ist das im Prinzip unmöglich.
Wenn Sie die Fähigkeit der Multifaktor-Sortierung eines bekannten Typs benötigen, können Sie es mit Klassen tun, und insbesondere CArrayObj ist für sie konzipiert.
Ich sollte hinzufügen, dass auch in erwachsenen Sprachen wie C# komplexe Objekte Sortierung über benutzerdefinierte IComparer gelöst ist. D.h. Sie müssen trotzdem selbst ein Sortierkriterium schreiben.
Dies ist die Methode, die ich umgehen wollte. Ich dachte, es gäbe vielleicht andere Möglichkeiten.
Es gibt zwei Möglichkeiten.
Die erste Möglichkeit besteht darin, den Operator <
Weg Nummer zwei sind die Funktionäre.
Methode Nummer eins:
Methode Nummer zwei ist ähnlich, nur ist der Operator komplett extern und wird an die Sortierung übergeben. Es ist ein bisschen komplizierter, aber vielseitiger.
Wenn Sie möchten, kann ich Ihnen einige Ideen geben, aber erst später.
Sortieren einfach kopieren einige kodobase, wenn Sie schneller brauchen, müssen Sie Ihre eigene intelligente zu schreiben, aber Sie müssen nur es einmal zu schreiben und nicht mehr stören.Methode Nummer zwei ist ähnlich, nur ist der Operator komplett extern und wird an die Sortierung übergeben. Es ist ein bisschen komplizierter, aber viel vielseitiger.
Das heißt, Sie müssen Zeiger auf Funktionen verwenden