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

 
Combinateur:
Temps moyen O(1) pire O(n) et les performances dépendent fortement du hachage.

O(n) - c'est si vous allez tête à tête.

 
Vasiliy Sokolov:


Depuis le 6 décembre 2017, le jeu de livraison standard de MetaTrader 5 comprend les classes dites génériques, qui mettent en œuvre des algorithmes efficaces de stockage et d'extraction des données. Cette branche est créée pour décrire ces classes, des exemples de travail avec elles et pour des suggestions sur la façon d'améliorer leur travail.

Qu'est-ce que le générique ? Les génériques sont des classes de modèles spéciales qui peuvent stocker des types de données personnalisés. L'identification des types est effectuée au moment de la compilation, ce qui permet d'obtenir des performances élevées.

Pourquoi le générique ? En général, les programmeurs novices ne connaissent qu'un seul type de collections : les tableaux. Mais il existe de nombreuses tâches pour lesquelles le travail avec un tableau est inefficace. Imaginons que nous ayons un tableau composé d'un million d'identifiants uniques, par exemple un millier de commandes. Comment vérifier s'il existe une commande portant le numéro N dans ce millier de commandes ? Si nous utilisons l'une des classes génériques, cette tâche peut être accomplie presque immédiatement, en un temps constant, qui ne dépend pas du nombre d'éléments que nous recherchons. Il existe d'autres problèmes, où l'algorithme correct de la collection générique peut être plus rapide que l'algorithme inventé par le programmeur.

C'est un thème intéressant.

Personnellement, je pense qu'il n'y a rien de plus efficace en programmation que d'organiser les données dans des tableaux et de travailler correctement avec ces tableaux dans des boucles. C'est la base de l'essentiel. Toutes les autres solutions sont des dérivés, qui prennent du temps informatique supplémentaire et créent des frais généraux.

Tableaux globaux, tableaux locaux, boucles et fonctions. Tout.

Ceux qui maîtrisent habilement ces outils auront une longueur d'avance sur tous les autres en matière d'efficacité.

imho.

 
Ivan Gurov:

Je suggère de simplifier les noms - de les rendre plus logiques. Par exemple, CArrayList est-il un tableau ou une liste dans mql5, une implémentation des deux ?

Tout cela est source de questions et de confusion. IMHO, nous devrions utiliser stl et non C# ou Java. Ou bien supprimer le C devant, pour que ce soit juste ArrayList.

...

Au contraire, j'aime beaucoup utiliser C#.

 
fxsaber:

Je l'ai dit très clairement.

Regardez ce qui est mis en évidence.

J'ai vérifié. Tout est écrit correctement. Votre réponse est qu'il faut en moyenne O(1) pour trouver un élément dans le dictionnaire, c'est-à-dire qu'il est instantané.
 
Vladimir Karputov:
Si vous pouvez donner des exemples, par exemple de la recherche parmi des milliers d'offres.

OK.

 
Tag Konow:

Il s'agit d'un sujet intéressant.

Personnellement, je pense qu'il n'y a rien de plus efficace en programmation que de savoir comment organiser correctement les données dans des tableaux et comment travailler correctement avec ces tableaux dans des boucles. C'est la base de l'essentiel. Toutes les autres solutions sont des dérivés, qui prennent du temps informatique supplémentaire et créent des frais généraux.

Tableaux globaux, tableaux locaux, boucles et fonctions. Tout.

Les programmeurs qui maîtrisent parfaitement ces outils auront une longueur d'avance sur tous les autres en matière d'efficacité.

imho.

Peter, ralentissez, s'il vous plaît. Il s'agit d'une discussion sur les nouvelles classes SB, pas de vos déclarations abstraites. S'il vous plaît, ne détournez pas le sujet sur le côté. Merci.

 
Artyom Trishkin:

Peter, ralentissez, s'il vous plaît. Il s'agit d'une discussion sur les nouvelles classes SB, pas de vos déclarations abstraites. S'il vous plaît, ne prenez pas le sujet à contre-pied. Merci.

J'ai le droit d'exprimer mon opinion ? Ou est-ce intolérable pour vous ?
 
ReTeg Konow:
Ai-je droit à mon opinion ? Ou est-ce intolérable pour vous ?
Non. parce que cette opinion a déjà été exprimée 100 fois et là encore avec votre samovar comme oop is evil etc. vous en avez assez entendu, vous en avez marre.
 
Tag Konow:
Ai-je le droit d'exprimer mon opinion ? Ou est-ce intolérable pour vous ?

Votre opinion est généralement un traité sur Guerre et Paix en trois volumes. Il est donc préférable de s'abstenir.

Note - il s'agit d'une deuxième demande d'un modérateur.

 
fxsaber:

O(n) est pour le tête-à-tête.

Non. O(n) est dû aux 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 normal, il n'est pas nécessaire d'effectuer une recherche, car en calculant le hachage, nous connaissons déjà l'emplacement de l'élément souhaité.

Raison: