Generische Klassenbibliothek - Bugs, Beschreibung, Fragen, Nutzungsmöglichkeiten und Vorschläge - Seite 4

 
Vasiliy Sokolov:

Du verstehst den Zusammenhang nicht. Wenn man in verschiedenen Threads herumläuft und ohne Beweise Unsinn behauptet, dann ist das ein klarer Fall für ein Verbot. Wenn Sie bereit sind, Ihre Behauptungen mit Quellcode zu belegen, sind Sie willkommen. Deshalb hat Vladimir Sie gewarnt, denn er selbst liebt den Quellcode und verlangt ihn manchmal sogar. Schauen Sie sich seine eigenen Beiträge als Beispiel an.


Das ist richtig. Wenn Sie den Code von Peter erhalten, können Sie seine Leistung vergleichen.

 
Vasiliy Sokolov:
Ich habe es mir angesehen. Alles ist richtig geschrieben. Wie Ihnen bereits gesagt wurde, erfolgt die Suche nach Elementen im Wörterbuch in der durchschnittlichen Zeit O(1), d.h. augenblicklich.

Das ist es, was unlogisch klingt. Bei Tausenden von Aufträgen sind höchstens 10 Kontrollen erforderlich. Aber sicherlich nicht im Durchschnitt. Es besteht immer eine Abhängigkeit der durchschnittlichen Suchzeit von der Anzahl der Einträge.

 
Kombinator:

Nein. O(n) wird aufgrund von Hash-Kollisionen in sehr seltenen Fällen erreicht. 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, denn durch die Berechnung des Hashes wissen wir bereits, wo sich das gesuchte Objekt befindet.


Soweit ich mich erinnere, ist die optimale Wahl der Größe des Hash-Wörterbuchs die Anzahl der erwarteten Elemente zum Quadrat.
Ein deutliches Beispiel für Kollisionen ist das Geburtstagsparadoxon.

https://ru.wikipedia.org/wiki/

 
Kombinator:

Im Normalfall besteht im Grunde keine Notwendigkeit zu suchen, da wir durch die Berechnung des Hashes im Grunde bereits wissen, wo sich das betreffende Objekt befindet.

Das klingt nicht plausibel. Aber ich warte auf Beispiele, dann werde ich sehen, wie die Umsetzung aussieht.

 
Sergey Dzyublik:

Auf der einen Seite ist es cool und auf der anderen Seite erinnern wir uns, dass MQL eine Menge Dinge hat, die im Vergleich zu anderen Sprachen fehlen: weder Mehrfachvererbung, foreach, yeild return, lamb, ...
Es ist klar, dass IEnumerable nicht in Frage kommt.

Wie können wir also C#-Container ohne IEnumerable behandeln?
Wir haben immer noch die alten C++-Algorithmen und verwenden Schnittstellen anstelle von Zeigern auf Funktionen.

Am Ende steht ein Mischmasch aus C# und C++.

Das Sammelsurium an Bezeichnungen ist genau das Ergebnis falscher Bezeichnungen, die Verwirrung stiften.

Wenn sie C++ wären, wäre alles klar.


PS Und warum ist diese Mehrfachvererbung nicht vorhanden? Kann ich es nicht so in mql5 schreiben?

class A : public B
  {
  }

Soweit ich das verstanden habe, ist das kein Problem.


Deshalb sind wir bei C/C++ gelandet. Wenn wir normale Namen machen. :)

 
Wladimir Karputow:

Das ist richtig. Wenn es einen Code von Peter gibt, wäre es sehr schön, die Leistung zu vergleichen.

Ich bin immer bereit, in der Code-Sprache zu sprechen. Der Autor könnte mir einfach einen Beweis anbieten, und ich würde direkt zur Sache kommen.

Lassen Sie den Autor die Aufgabe stellen, und wir werden unsere Lösungen nach ihrer Effizienz vergleichen.

 

Das Thema ist festgelegt. Sie können sich das so vorstellen:

Schritt 1: Klicken Sie auf "Allgemeine Diskussion".

und Sie können sofort sehen, dass das Thema angeheftet ist:

Schritt 2: Sicherstellen, dass das Thema festgelegt ist

 
fxsaber:

Das klingt nicht plausibel. Aber ich warte auf Beispiele, dann werde ich sehen, wie die Umsetzung aussieht.


Hashes sind im Durchschnitt O(1), wenn die Größe des Wörterbuchs die Anzahl der erwarteten Elemente zulässt.
Und dann hängt es von den Implementierungen der Kollisionsbehandlung ab, es könnte durch eine Liste sein, es könnte auch ein Sub-Hedge sein....


 
Sergey Dzyublik:

Ein Paradebeispiel für Kollisionen ist das Geburtstagsparadoxon.

Ich habe es in der Wiki gelesen. Der Fall, dass man die Logik des intuitiven Denkens überhaupt nicht versteht.

 
Wladimir Karputow:

Das Thema ist festgelegt. Sie können sich das so vorstellen:

und Sie können sofort sehen, dass das Thema angeheftet ist:

Ich danke Ihnen. Wir werden versuchen, diesen Thread interessant zu gestalten. Ich sehe schon die Nachfrage nach dem Thema:))