Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 2

 
Combinador:
Tiempo medio O(1) peor O(n) y el rendimiento depende en gran medida del hash.

O(n) - eso si vas de frente.

 
Vasiliy Sokolov:


Desde el 6 de diciembre de 2017, el conjunto de entregas estándar de MetaTrader 5 incluye las llamadas clases genéricas, que implementan algoritmos eficientes para el almacenamiento y la extracción de datos. Esta rama se ha creado para describir estas clases, ejemplos de trabajo con ellas y para que se hagan sugerencias sobre cómo mejorar su trabajo.

¿Qué es el genérico? El genérico es una clase de plantilla especial que puede almacenar tipos de datos personalizados. La identificación del tipo se realiza en el momento de la compilación, por lo que se consigue un alto rendimiento.

¿Por qué genérico? Normalmente, los programadores noveles sólo están familiarizados con un tipo de colección: un array. Pero hay muchas tareas en las que trabajar con una matriz es ineficaz. Imaginemos que tenemos un array formado por un millón de identificadores únicos, por ejemplo, mil pedidos. ¿Cómo comprobar si hay un pedido con el número N en este millar de pedidos? Si utilizamos una de las clases genéricas, esta tarea se puede realizar casi inmediatamente, en un tiempo constante, que no depende del número de elementos que estemos buscando. Hay otros problemas, en los que el algoritmo correcto de la colección genérica puede ser más rápido que el algoritmo inventado por el programador.

Es un tema interesante.

Personalmente, creo que no hay nada más eficiente en programación que organizar los datos dentro de arrays y trabajar correctamente con estos arrays en bucles. Esta es la base de los fundamentos. Todas las demás soluciones son derivadas, lo que requiere más tiempo de computación y crea una sobrecarga.

Matrices globales, matrices locales, bucles y funciones. Todo.

Aquellos que dominen estas herramientas estarán por delante de todos los demás en cuanto a eficacia.

imho.

 
Ivan Gurov:

Sugiero que se simplifiquen los nombres, que sean más lógicos. Por ejemplo, ¿es CArrayList un Array o una Lista en mql5 una implementación de ambos?

Todo esto da lugar a preguntas y confusión. En mi opinión, deberíamos utilizar stl y no C# o Java. O quitar la C delante, que sea sólo ArrayList.

...

Por el contrario, me gusta mucho usar C#.

 
fxsaber:

Lo he dicho muy claramente.

Mira lo que está resaltado.

Lo he buscado. Está escrito correctamente. Su respuesta es que se tarda una media de O(1) en encontrar un elemento en el diccionario, es decir, es instantáneo.
 
Vladimir Karputov:
Si puede dar ejemplos, por ejemplo de búsqueda entre miles de ofertas.

DE ACUERDO.

 
Etiqueta Konow:

Es un tema interesante.

Personalmente, creo que no hay nada más eficaz en programación que saber organizar correctamente los datos dentro de las matrices y saber trabajar correctamente con esas matrices en los bucles. Esta es la base de los fundamentos. Todas las demás soluciones son derivadas, lo que requiere más tiempo de computación y crea una sobrecarga.

Matrices globales, matrices locales, bucles y funciones. Todo.

Los programadores que dominen estas herramientas con maestría estarán por delante de todos los demás en cuanto a eficiencia.

imho.

Peter, más despacio, por favor. Esta es una discusión sobre las nuevas clases de SB, no sobre sus declaraciones abstractas. Por favor, no desvíes el tema a un lado. Gracias.

 
Artyom Trishkin:

Peter, por favor, ve más despacio. Esta es una discusión sobre las nuevas clases de SB, no sus declaraciones abstractas. Por favor, no te lleves el tema de lado. Gracias.

¿Tengo derecho a expresar mi opinión? ¿O es intolerable para ti?
 
ReTeg Konow:
¿Tengo derecho a opinar? ¿O es intolerable para ti?
No. porque esta opinión ya ha sido expresada 100 veces y aquí de nuevo con tu samovar como que oop es malo etc. ya has escuchado suficiente, estás harto.
 
Etiqueta Konow:
¿Tengo derecho a expresar mi opinión? ¿O es intolerable para ti?

Su opinión suele ser un tratado de Guerra y Paz en tres volúmenes. Así que es mejor abstenerse.

Nota: esta es una segunda petición de un moderador.

 
fxsaber:

O(n) es para el cara a cara.

No. O(n) se debe a colisiones de hash en casos muy raros. Son estimaciones de la complejidad del algoritmo óptimo. El número de colisiones está relacionado con la sobrecarga de memoria

En el caso normal, no hay necesidad de buscar, porque al calcular el hash ya sabemos esencialmente la ubicación del elemento deseado

Razón de la queja: