Generische Klassenbibliothek - Bugs, Beschreibung, Fragen, Nutzungsmöglichkeiten und Vorschläge - Seite 2
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Durchschnittliche Zeit O(1) schlimmstenfalls O(n) und die Leistung ist stark hash-abhängig.
O(n) - das ist, wenn man Kopf an Kopf geht.
Seit dem 6. Dezember 2017 gehören zum Standardlieferumfang von MetaTrader 5 die sogenannten Generic-Klassen, die effiziente Algorithmen zur Datenspeicherung und -extraktion implementieren. Dieser Zweig wurde eingerichtet, um diese Klassen zu beschreiben, Beispiele für die Arbeit mit ihnen zu geben und Vorschläge für die Verbesserung ihrer Arbeit zu machen.
Was ist generisch? Generic ist eine spezielle Vorlagenklasse, die benutzerdefinierte Datentypen speichern kann. Die Typidentifizierung erfolgt zum Zeitpunkt der Kompilierung, wodurch eine hohe Leistung erreicht wird.
Normalerweise sind Programmieranfänger nur mit einem Typ von Sammlungen vertraut: einem Array. Es gibt jedoch viele Aufgaben, bei denen die Arbeit mit einem Array ineffektiv ist. Stellen Sie sich vor, Sie haben ein Array, das aus einer Million eindeutiger Bezeichner besteht, zum Beispiel tausend Bestellungen. Wie kann man überprüfen, ob es in diesen tausend Aufträgen einen Auftrag mit der Nummer N gibt? Wenn wir eine der generischen Klassen verwenden, kann diese Aufgabe fast sofort erledigt werden, in einer konstanten Zeitspanne, die nicht von der Anzahl der gesuchten Elemente abhängt. Es gibt andere Probleme, bei denen der richtige Algorithmus aus der generischen Sammlung schneller sein kann als der vom Programmierer erfundene Algorithmus.
Das ist ein interessantes Thema.
Ich persönlich glaube, dass es in der Programmierung nichts Effizienteres gibt, als Daten in Arrays zu organisieren und mit diesen Arrays in Schleifen korrekt zu arbeiten. Dies ist die Basis der Grundlagen. Bei allen anderen Lösungen handelt es sich um Ableitungen, die zusätzliche Computerzeit beanspruchen und Overhead verursachen.
Globale Arrays, lokale Arrays, Schleifen und Funktionen. Alles.
Wer diese Werkzeuge gekonnt beherrscht, wird allen anderen an Effizienz voraus sein.
imho.
Ich schlage vor, die Namen zu vereinfachen - sie logischer zu gestalten. Zum Beispiel ist CArrayList ein Array oder Liste in mql5 eine Implementierung von beiden?
Dies alles führt zu Fragen und Verwirrung. IMHO sollten wir stl und nicht C# oder Java verwenden. Oder entfernen Sie das vorangestellte C und lassen Sie es einfach ArrayList sein.
...
Im Gegenteil, ich verwende C# sehr gerne.
Ich habe es sehr deutlich gesagt.
Sehen Sie sich an, was hervorgehoben ist.
Wenn Sie Beispiele nennen können, zum Beispiel die Suche unter Tausenden von Angeboten.
GUT.
Das ist ein interessantes Thema.
Ich persönlich glaube, dass es in der Programmierung nichts Effektiveres gibt, als zu wissen, wie man Daten in Arrays richtig organisiert und wie man mit diesen Arrays in Schleifen richtig arbeitet. Dies ist die Basis der Grundlagen. Bei allen anderen Lösungen handelt es sich um Ableitungen, die zusätzliche Rechenzeit benötigen und Overhead verursachen.
Globale Arrays, lokale Arrays, Schleifen und Funktionen. Alles.
Diejenigen Programmierer, die diese Werkzeuge meisterhaft beherrschen, werden allen anderen an Effizienz voraus sein.
imho.
Peter, mach bitte langsam. Dies ist eine Diskussion über neue SB-Klassen, nicht über Ihre abstrakten Aussagen. Bitte lenken Sie nicht vom Thema ab. Ich danke Ihnen.
Peter, bitte fahr langsamer. Dies ist eine Diskussion über die neuen SB-Klassen, nicht über Ihre abstrakten Aussagen. Bitte nehmen Sie das Thema nicht auf die leichte Schulter. Ich danke Ihnen.
Habe ich ein Recht auf meine Meinung? Oder ist es für Sie unerträglich?
Habe ich das Recht, meine Meinung zu äußern? Oder ist es für Sie unerträglich?
Ihre Meinung ist in der Regel eine Abhandlung über Krieg und Frieden in drei Bänden. Es ist also am besten, darauf zu verzichten.
Hinweis: Dies ist eine zweite Anfrage eines Moderators.
O(n) steht für Kopf-an-Kopf.
Nein. O(n) ist auf Hash-Kollisionen in sehr seltenen Fällen zurückzuführen. Dies sind Komplexitätsschätzungen für den optimalen Algorithmus. Die Anzahl der Kollisionen hängt mit dem Speicher-Overhead zusammen
Im Normalfall besteht im Grunde keine Notwendigkeit zu suchen, da wir durch die Berechnung des Hashes im Grunde bereits wissen, wo sich das gewünschte Element befindet