Biblioteca de classes genéricas - bugs, descrição, perguntas, recursos de uso e sugestões - página 2

 
Combinador:
A média de tempo O(1) pior O(n) e desempenho é fortemente dependente de haxixe.

O(n) - isso é se você for frente a frente.

 
Vasiliy Sokolov:


A partir de 6 de dezembro de 2017, o conjunto de entrega padrão MetaTrader 5 inclui as chamadas classes genéricas, que implementam algoritmos eficientes para armazenamento e extração de dados. Este ramo é criado para descrever estas aulas, exemplos de trabalho com elas e para sugestões de como melhorar o seu trabalho.

O que é genérico? Genérico é uma classe de modelo especial que pode armazenar tipos de dados personalizados. A identificação do tipo é realizada no momento da compilação e, portanto, o alto desempenho é alcançado.

Porquê genérico? Normalmente os programadores novatos estão familiarizados com apenas um tipo de colecções: um array. Mas há muitas tarefas em que trabalhar com uma matriz é ineficaz. Imagine que temos um conjunto composto por um milhão de identificadores únicos, por exemplo, mil pedidos. Como verificar se existe uma encomenda com o número N neste milhar de encomendas? Se utilizarmos uma das classes genéricas, esta tarefa pode ser realizada quase imediatamente, em um tempo constante, o que não depende do número de elementos que estamos procurando. Existem outros problemas, onde o algoritmo correto da coleção genérica pode ser mais rápido do que o algoritmo inventado pelo programador.

É um tema interessante.

Pessoalmente, acho que não há nada mais eficiente na programação do que organizar os dados dentro das matrizes e trabalhar corretamente com essas matrizes em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que consomem tempo adicional de computador e criam despesas gerais.

Arrays globais, arrays locais, loops e funções. Tudo.

Aqueles que são mestres hábeis nestas ferramentas estarão à frente de todos os outros em eficiência.

imho.

 
Ivan Gurov:

Sugiro simplificar os nomes - torná-los mais lógicos. Por exemplo, a CArrayList é um Array ou List em mql5 uma implementação de ambos?

Tudo isto leva a perguntas e confusão. IMHO, devemos usar stl e não C# ou Java. Ou remova C na frente dele, que seja apenas a ArrayList.

...

Pelo contrário, eu gosto muito de usar C#.

 
fxsaber:

Eu disse-o muito claramente.

Vejam o que está destacado.

Procurei-o. Está tudo escrito correctamente. Sua resposta é que é preciso uma média de O(1) para encontrar um item no dicionário, ou seja, instantâneo.
 
Vladimir Karputov:
Se você puder dar exemplos, por exemplo, sobre a busca entre milhares de negócios.

ESTÁ BEM.

 
Tag Konow:

Este é um tópico interessante.

Pessoalmente, acho que não há nada mais eficaz na programação do que saber como organizar corretamente os dados dentro das arrays e como trabalhar corretamente com essas arrays em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que levam tempo adicional de computador e criam despesas gerais.

Arrays globais, arrays locais, loops e funções. Tudo.

Os programadores que conseguem dominar estas ferramentas com maestria estarão à frente de todos os outros em eficiência.

imho.

Peter, mais devagar, por favor. Esta é uma discussão sobre novas aulas de SB, não sobre suas declarações abstratas. Por favor, não desvie o tópico para o lado. Obrigado.

 
Artyom Trishkin:

Peter, por favor, abranda. Esta é uma discussão sobre as novas aulas de SB, não sobre suas declarações abstratas. Por favor, não leve o tópico para o lado. Obrigado.

Eu tenho o direito de expressar a minha opinião? Ou é intolerável para si?
 
ReTeg Konow:
Tenho direito à minha opinião? Ou é intolerável para si?
Não. porque esta opinião já foi expressa 100 vezes e aqui novamente com o seu samovar como o oop é mau etc. você já ouviu o suficiente desta opinião, você está farto dela.
 
Tag Konow:
Tenho o direito de expressar a minha opinião? Ou é intolerável para si?

Sua opinião é normalmente um tratado sobre Guerra e Paz em três volumes. Por isso é melhor abster-se.

Nota - este é um segundo pedido de um moderador.

 
fxsaber:

O(n) é para frente a frente.

Não. O(n) é devido a colisões de hash em casos muito raros. Estas são estimativas de complexidade para o algoritmo ideal. O número de colisões está relacionado com a sobrecarga de memória

No caso normal não há essencialmente necessidade de procurar, porque ao calcular o hash já sabemos essencialmente a localização do elemento desejado

Razão: