Caractéristiques du langage mql5, subtilités et techniques - page 47
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Comme celui-là ?
https://www.mql5.com/ru/code/9336
La question portait sur un tableau de structures et le tri par champs de structure.
Quelqu'un a-t-il réalisé un tri efficace en termes de ressources d'un tableau de structures par n'importe quel champ (pas une chaîne) de la structure ?
Supposons qu'il existe une structure avec trois champs int, datetime et double, et qu'il existe un tableau rempli de données constitué de cette structure. Dans chaque cellule du tableau, les champs de la structure sont remplis.
Comment trier ce tableau par l'un de ces champs ?
Créer un tableau double[][2], le remplir comme { fieldvalue, arrayindex }. Trier par ArraySort régulier (par la première modification). Ensuite, vous devez organiser les structures dans le tableau en fonction des index.
Je voulais contourner cette méthode. Je me suis dit qu'il y avait peut-être d'autres moyens.
Pourquoi le contourner ? Il n'y a rien de plus rapide, car le tri est effectué par une fonction native.
Pourquoi le contourner ? Il n'y a rien de plus rapide, car c'est une fonction native qui effectue le tri.
Quelqu'un a-t-il réalisé un tri efficace en termes de ressources d'un tableau de structures par n'importe quel champ (pas une chaîne) de la structure ?
Supposons qu'il existe une structure avec trois champs int, datetime et double, et qu'il existe un tableau rempli de données constitué de cette structure. Dans chaque cellule du tableau, les champs de la structure sont remplis.
Comment trier ce tableau par l'un de ces champs ?
Bonjour, si vous avez besoin d'une sorte de fonction de tri universelle qui puisse trier un tableau de type de données complexe, c'est impossible en principe.
Si vous avez besoin de la capacité de tri multifactoriel d'un type connu, vous pouvez le faire en utilisant des classes, et en particulier CArrayObj est conçu pour cela.
Je dois ajouter que même dans les langages pour adultes comme C#, le tri des objets complexes est résolu par un IComparer personnalisé. C'est-à-dire que vous devrez tout de même écrire vous-même un critère de tri.
C'est la méthode que je voulais contourner. Je pensais qu'il y avait d'autres moyens.
Il y a deux façons de procéder.
Le moyen numéro un est de mettre l'opérateur <
La deuxième voie est celle des fonctionnaires.
Méthode numéro un :
La méthode numéro deux est similaire, sauf que l'opérateur est complètement externe et qu'il passe au tri. C'est un peu plus compliqué, mais beaucoup plus polyvalent.
Si vous en avez besoin, je peux vous donner quelques idées, mais seulement plus tard.
Le tri est juste un copier-coller de kodobase, si vous avez besoin d'être plus rapide, vous devrez écrire votre propre tri intelligent, mais vous n'aurez à l'écrire qu'une seule fois et vous ne vous en soucierez plus.La méthode numéro deux est similaire, sauf que l'opérateur est complètement externe et qu'il passe au tri. C'est un peu plus compliqué mais beaucoup plus polyvalent.
C'est-à-dire que vous devez utiliser des pointeurs vers des fonctions