Bibliothèque de classes génériques - bogues, description, questions, caractéristiques d'utilisation et suggestions - page 4

 
Vasiliy Sokolov:

Tu ne comprends pas le contexte. Si vous vous promenez dans divers fils de discussion et affirmez des absurdités sans preuve, alors oui, c'est un coup direct à l'interdiction. Si vous êtes prêt à étayer vos affirmations par un code source, vous êtes le bienvenu. C'est pourquoi Vladimir vous a donné un avertissement, car il aime lui-même le code source et l'exige même parfois. Regardez dans ses propres fils de discussion pour en avoir un exemple.


C'est vrai. Si vous obtenez le code de Peter, il sera très agréable de comparer ses performances.

 
Vasiliy Sokolov:
Je l'ai regardé. Tout est écrit correctement. Comme on vous l'a déjà dit, la recherche d'éléments dans le dictionnaire se fait en temps moyen O(1), c'est-à-dire instantanément.

C'est ce qui semble illogique. Parmi des milliers de commandes, un maximum de 10 contrôles est nécessaire. Mais certainement pas un en moyenne. Il existe toujours une dépendance du temps de recherche moyen par rapport au nombre d'éléments.

 
Combinateur:

Non. O(n) est obtenu à cause des collisions de hachage dans de très rares cas. Il s'agit d'estimations de la complexité de l'algorithme optimal. Le nombre de collisions est lié à la charge de la mémoire.

Dans le cas habituel, il n'est pas nécessaire de chercher, car en calculant le hachage, nous connaissons déjà l'emplacement de l'élément dont nous avons besoin.


Autant que je me souvienne, le choix optimal de la taille du dictionnaire de hachage est le nombre d'éléments attendus au carré.
Un exemple clair de collisions est le paradoxe de l'anniversaire.

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

 
Combinateur:

Dans le cas normal, il n'est pas nécessaire de chercher, car en calculant le hachage, nous connaissons déjà l'emplacement de l'élément en question.

Ça ne semble pas plausible. Mais j'attendrai des exemples, puis je verrai les entrailles de la mise en œuvre.

 
Sergey Dzyublik:

D'une part, c'est cool et d'autre part, nous nous rappelons que MQL a beaucoup de choses qui sont absentes par rapport à d'autres langages : ni l'héritage multiple, ni foreach, ni yeild return, ni lamb, ...
Il est clair que IEnumerable est hors de question.

Alors, comment pouvons-nous gérer les conteneurs C# sans IEnumerable ?
Nous avons toujours les anciens algorithmes C++ et utilisons des interfaces au lieu de pointeurs vers des fonctions.

Au final, nous obtenons un mélange de C# et de C++.

Le méli-mélo de noms est précisément dû à des noms incorrects qui sèment la confusion.

S'ils étaient C++, tout serait clair.


PS Et pourquoi cet héritage multiple est absent ? Ne puis-je pas l'écrire ainsi dans mql5 ?

class A : public B
  {
  }

D'après ce que j'ai compris, il n'y a pas de problème.


C'est pourquoi nous nous retrouvons avec C/C++. Si on fait des noms normaux. :)

 
Vladimir Karputov:

Exactement. S'il existe un code de Peter, ce serait très bien de pouvoir comparer les performances.

Je suis toujours prêt à parler en langage codé. L'auteur pourrait simplement me proposer une preuve et j'irais droit au but.

Laissez l'auteur fournir la tâche et nous comparerons nos solutions en fonction de leur efficacité.

 

Le sujet est fixé. Vous pouvez le voir comme ceci :

Étape 1 : Cliquez sur "Discussion générale".

et vous pouvez immédiatement voir que le sujet est épinglé :

Étape 2 : vérifier que le sujet est fixé

 
fxsaber:

Ça ne semble pas plausible. Mais j'attendrai des exemples, puis je verrai les entrailles de la mise en œuvre.


Les hachages sont en moyenne O(1) si la taille du dictionnaire par rapport au nombre d'éléments attendus le permet.
Ensuite, cela dépend des implémentations de la gestion des collisions, cela peut se faire par le biais d'une liste ou d'une sous-couverture.....


 
Sergey Dzyublik:

Un excellent exemple de collision est le paradoxe de l'anniversaire.

Je l'ai lu sur le wiki. Le cas où vous ne comprenez pas du tout la logique du raisonnement intuitif.

 
Vladimir Karputov:

Le sujet est fixé. Vous pouvez le voir comme ceci :

et vous pouvez immédiatement voir que le sujet est épinglé :

Merci. Nous allons essayer de rendre ce fil de discussion intéressant. Je vois déjà la demande pour ce thème :))