Características da linguagem mql5, subtilezas e técnicas - página 47
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Como este aqui?
https://www.mql5.com/ru/code/9336
A questão era sobre um conjunto de estruturas e a ordenação por campos de estrutura.
Alguém fez uma ordenação eficiente de um conjunto de estruturas por algum (e não cordel) campo dado da estrutura?
Suponha que haja uma estrutura com três campos int, datetime e double, e que haja uma matriz preenchida com dados que consistem nesta estrutura. Em cada célula da matriz, os campos da estrutura são povoados.
Como ordenar esta matriz por qualquer um destes campos?
Crie array double[][2], preencha-o como { fielddvalue, arrayindex }. Ordenar por padrão ArraySortar (pela primeira alteração). E então você precisa organizar as estruturas na matriz de acordo com os índices.
Eu queria contornar este método. Eu pensei, talvez haja outras maneiras.
Porquê ignorá-lo? Não se pode pensar em nada mais rápido, porque a triagem é feita por uma função nativa.
Porquê ignorá-lo? Não se pode pensar em nada mais rápido, pois é uma função nativa que faz a triagem.
Alguém fez uma ordenação eficiente de um conjunto de estruturas por algum (e não cordel) campo dado da estrutura?
Suponha que haja uma estrutura com três campos int, datetime e double, e que haja uma matriz preenchida com dados que consistem nesta estrutura. Em cada célula da matriz, os campos da estrutura são povoados.
Como ordenar esta matriz por qualquer um destes campos?
Olá, se você precisa de algum tipo de função de classificação universal que possa classificar um conjunto de tipos de dados complexos, isso é impossível, em princípio.
Se você precisar de capacidade de classificação de múltiplos fatores de um tipo conhecido, você pode fazê-lo usando classes, e em particular o CArrayObj é projetado para isso.
Devo acrescentar que mesmo em idiomas tão maduros como C# a ordenação de objetos complexos é resolvida usando o IComparer personalizado. Ou seja, você mesmo terá que escrever um critério de classificação.
Este é o método que eu queria contornar. Pensei que talvez houvesse outras formas.
Há duas maneiras.
A maneira número um é definir o operador <
O modo número dois são os funcionários.
Método número um:
O método número dois é semelhante, apenas o operador é completamente externo e é passado para a ordenação. É um pouco mais complicado, mas muito mais versátil.
Se precisares, posso dar-te algumas ideias, mas só mais tarde.
Escolhendo apenas copypaste algum kodobase, se você precisar de mais rápido, você terá que escrever o seu próprio kodobase inteligente, mas você só tem que escrevê-lo uma vez e não se incomode mais.O método número dois é semelhante, apenas o operador é completamente externo e é passado para a ordenação. É um pouco mais complicado, mas muito mais versátil.
Ou seja - você tem que usar apontadores para funções