Generische Klassenbibliothek - Bugs, Beschreibung, Fragen, Nutzungsmöglichkeiten und Vorschläge - Seite 23
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
Die Funktion wird global deklariert. Aus diesem Grund gibt es einen Konflikt mit ihrem Vergleich durch die Nutzer.
Um Namenskonflikte zu vermeiden, könnte der Autor alle globalen generischen Hilfsfunktionen zu public-static-methods machen?
fxsaber:
Um Namenskonflikte zu vermeiden, könnte der Autor alle globalen generischen Hilfsfunktionen zu public-static-methods machen?
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Compilerfehler: 'operator=' - Struktur hat Objekte und kann nicht kopiert werden
Dies ist vorläufig. Wenn Sie die Bibliothek von jemandem einbinden wollen, werden Sie feststellen, dass der Autor genauso "primitiv" schreibt wie Sie und dieselben Namen für Klassen und Funktionen verwendet.
Ich werde sie mit Makros festnageln.
Ich habe nicht von mir selbst gesprochen.
Ich habe alle Seiten der Diskussion gelesen, aber ich verstehe immer noch nicht, wie man es benutzt?
Kann mir jemand einige Beispiele nennen?
Ich habe alle Seiten der Diskussion gelesen, aber ich verstehe immer noch nicht, wie man es benutzt?
Kann mir jemand einige Beispiele nennen?
Vergessen Sie es. So wie es jetzt ist, können Sie es nicht verwenden. Verwenden Sie stattdessen das Standard-CObject + CDictionary. Für die meisten Aufgaben ist das ausreichend.
Frage zum Abrufen eines Wertes nach Schlüssel. Im Bibliothekscode sieht diese Methode wie folgt aus
Die ME-Navigationswerkzeuge (ALT+G und CTRL+-) funktionieren in dieser Bibliothek nicht. Daher ist es sehr schwierig, die Logik nachzuvollziehen. Insbesondere habe ich den Anfangswert in der hervorgehobenen Schleife noch nicht herausgefunden. Es besteht jedoch Einigkeit darüber, dass dieser Wert, wenn es eine Geschwindigkeit gibt, viel geringer sein sollte als die Anzahl der Schlüssel.
Bitte erläutern Sie die Idee, welche Geschwindigkeit bei dieser Funktion erreicht wird. Der Overkill ist eindeutig vorhanden. Aber offenbar ist sie aus irgendeinem Grund zu kurz.
SZ Ich bin meinen Debugger Schritt für Schritt durchgegangen. Alles klar bei Beispiel TKey = int: m_bucket[Array[i]] = i. Nur Kollisionen, wenn Array[i] == Array[j] (i != j) sind unklar.
Die Frage ist, wie man den Wert über den Schlüssel erhält. Im Bibliothekscode sieht diese Methode wie folgt aus
Bitte klären Sie die Idee, was diese Funktion schnell macht? Das Überschwingen ist offensichtlich vorhanden. Aber offenbar ist sie aus irgendeinem Grund zu kurz.
Ich habe einmal beschrieben, wieCHashMap funktioniert
Sie müssen nach Einträgen suchen, wahrscheinlich in diesem Thread.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Generische Klassenbibliothek - Bugs, Beschreibung, Fragen, Besonderheiten der Nutzung und Vorschläge
Sergey Dzyublik, 2017.12.11 13:41
Kurz über die aktuelleCHashMap-Implementierung:
Zunächst wollen wir herausfinden, wasEntry<TKey,TValue> ist.
Im Wesentlichen ist es ein Knoten wie in CLinkedList, der enthält:
m_entries[] - Array von "Zellen", in denen der hinzugefügte Schlüssel und Wert, Hash_code, next abgelegt werden. Die Größe des Arrays entspricht der Kapazität.
m_count - gibt den Index der ersten unbenutzten Zelle in m_entries an. Der Anfangswert ist 0 und wächst bis zur Kapazität, danach werden alle Felder mit zunehmender Kapazität und Größe neu aufgebaut.
m_buckets[] - Index-Array auf m_entries[]. Der Standardwert ist -1. Die Größe des Arrays entspricht der Kapazität.
Keine Kollision, Hinzufügen eines eindeutigen Wertes zumCHashMap-Container:
Ohne Kollisionen, Wert nach Schlüssel imCHashMap-Container erhalten:
Kollisionsauflösung:
Kollision, Wert nach Schlüssel imCHashMap-Container erhalten:
Entfernen eines Wertes aus demCHashMap-Container:
Neuaufbau der Hash-Tabelle (Prozess der Kapazitätssteigerung) :
Beschriebenes Verhalten vom2017.12.11
Aktuell, kann einige Details/Koeffizienten hinzugefügt/geändert haben.
Ich habe schon einmal die Funktionsweise vonCHashMap zerlegt und beschrieben
Sie müssen nach Einträgen suchen, wahrscheinlich in diesem Thread.
Ich habe es gefunden auf
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Generische Klassenbibliothek - Fehler, Beschreibungen, Fragen, Besonderheiten der Nutzung und Vorschläge
Sergey Dzyublik, 2017.12.07 14:21
In diesem Beispiel ist der Hash der Geburtstag des Schülers.
Wir haben einen Schrank mit 365 Fächern, in dem die Tagebücher der Schüler liegen.
Wir stellen jedes Tagebuch in das Regal, das dem Geburtstag des Schülers entspricht.
Wir brauchen das Tagebuch des Schülers Petrov und wir wissen, wann er geboren wurde.
Anhand des Geburtsdatums in O(1) können wir nun leicht Petrovs Tagebuch sowie das Tagebuch eines jeden anderen Schülers finden.
Die Ausnahme ist, wenn zwei Schüler den gleichen Geburtstag haben - dies wird als Kollision bezeichnet.
Das Lösen einer Kollision besteht darin, die zusätzlichen Informationen zu nutzen, um herauszufinden, welches von zwei oder mehr Journalen wir brauchen.
Bei der Kollisionsauflösung durch eine Liste werden einfach alle Einträge in der Kollisionsliste nacheinander durchgegangen, um eine Übereinstimmung zu finden. Reißt jedes Tagebuch ab und schaut, wem es gehört.
Eine Unterrubrik organisiert eine Hash-Tabelle mit den an der Kollision beteiligten Elementen, jedoch nach einem anderen Kriterium. Zum Beispiel nach der Stunde, in der der Schüler geboren wurde.
Wenn Sie sich für das Thema interessieren - ich empfehle einen Kurs von MailRu auf youtube über Algorithmen und Datenstrukturen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Generische Klassenbibliothek - Fehler, Beschreibung, Fragen, Besonderheiten der Verwendung und Vorschläge
Sergey Dzyublik, 2017.12.08 14:40
Die Grundlagen zu diesem Thema sind etwas für Faule:
https://www.slideshare.net/mkurnosov/6-32402313
In Wirklichkeit ist es viel komplizierter und wird in der einschlägigen Literatur oder in guten "Algorithmen und Datenstrukturen"-Kursen behandelt.
Danke, die Fehlersuche hat geholfen. Für Kollisionen gibt es kleine Listen. Ich habe das Thema durchgelesen und war entsetzt. Es stellt sich heraus, dass es zum Thema gehörte...
Ab sofort können einige Details/Koeffizienten hinzugefügt/geändert werden.
Herzlichen Dank! Ihre Beschreibung war sehr hilfreich.