Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 23
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La función se declara globalmente. Por ello, existe un conflicto con su Comparación por parte de los usuarios.
Para reducir los conflictos de nomenclatura, ¿podría el autor convertir todas las funciones genéricas auxiliares globales en métodos públicos-estáticos?
fxsaber:
Para reducir los conflictos de nomenclatura, ¿podría el autor convertir todas las funciones genéricas auxiliares globales en métodos públicos-estáticos?
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Error del compilador: 'operator=' - la estructura tiene objetos y no se puede copiar
Esto es por el momento. Si quiere incluir la biblioteca de alguien, descubrirá que el autor escribe tan "primitivo" como usted, utilizando los mismos nombres de clases y funciones.
Los clavaré con macros.
No estaba hablando de mí.
He leído todas las páginas de la discusión, pero todavía no entiendo cómo usarlo?
¿Puede alguien darme algunos ejemplos?
He leído todas las páginas de la discusión, pero todavía no entiendo cómo usarlo?
¿Puede alguien darme algunos ejemplos?
Olvídalo. No se puede utilizar tal y como está ahora. En su lugar, utilice el CObject estándar + CDictionary. Para la mayoría de las tareas, es suficiente.
Pregunta sobre la recuperación de un valor por clave. En el código de la biblioteca, este método tiene el siguiente aspecto
Las herramientas de navegación de ME (ALT+G y CTRL+-) por origen se niegan a funcionar en esta biblioteca. Por lo tanto, es muy difícil seguir la lógica. En particular, aún no he averiguado el valor inicial en el bucle resaltado. Pero se entiende que si hay una velocidad, este valor debe ser mucho menor que el número de llaves.
Por favor, aclare la idea, ¿cuál es la velocidad alcanzada en esta función? La exageración está claramente presente. Pero aparentemente es corto por alguna razón.
SZ he revisado mi depurador paso a paso. Todo claro en el ejemplo TKey = int: m_bucket[Array[i]] = i. Sólo las colisiones cuando Array[i] == Array[j] (i != j) no son claras.
La pregunta es sobre la obtención del valor por la clave. En el código de la biblioteca este método tiene el siguiente aspecto
Por favor, aclare la idea, ¿qué hace que esta función sea rápida? El rebasamiento está obviamente presente. Pero aparentemente es corto por alguna razón.
En un momento dado estuve revisando y describiendo cómo funcionaCHashMap
. Tienes que buscar las entradas, probablemente en este hilo.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Biblioteca de clases genéricas - errores, descripción, preguntas, peculiaridades de uso y sugerencias
Sergey Dzyublik, 2017.12.11 13:41
Brevemente sobre la implementación actualde CHashMap:
En primer lugar, vamos a averiguar qué esEntry<TKey,TValue>.
Esencialmente es un Nodo como en CLinkedList que contiene:
m_entries[] - matriz de "celdas" donde se colocan la clave y el valor añadidos, hash_code, next. El tamaño de la matriz corresponde a la Capacidad.
m_count - especifica el índice de la primera celda no utilizada en m_entries. El valor inicial es 0, creciendo hasta la Capacidad, lo siguiente es reconstruir todas las matrices con el aumento de la Capacidad y el tamaño de todas las matrices.
m_buckets[] - matriz de índices en m_entries[]. El valor por defecto es -1. El tamaño de la matriz corresponde a la capacidad.
Sin colisión, añadiendo un valor único al contenedorCHashMap:
Sin colisiones, obtener el valor por clave en el contenedorCHashMap:
Resolución de colisiones:
Colisión, obtener el valor por clave en el contenedorCHashMap:
Eliminación de un valor del contenedorCHashMap:
Reconstruir la tabla hash (proceso de aumento de capacidad) :
Comportamiento descrito a partir de2017.12.11
Actualmente, puede haber añadido/cambiado algunos detalles/coeficientes.
En algún momento he desmontado y descrito cómo funcionaCHashMap
Tienes que buscar las entradas, probablemente en este hilo.
Lo encontré en
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Biblioteca de clases genéricas - errores, descripciones, preguntas, peculiaridades de uso y sugerencias
Sergey Dzyublik, 2017.12.07 14:21
En este ejemplo, el hash es la fecha de nacimiento del estudiante.
Tenemos un armario con 365 estantes que contienen las agendas de los alumnos.
Colocamos cada agenda en la estantería correspondiente al cumpleaños del alumno.
Necesitamos el diario del alumno Petrov y sabemos cuándo nació.
Ahora por la fecha de nacimiento en O(1) podemos encontrar fácilmente el diario de Petrov, así como el de cualquier otro estudiante.
La excepción es cuando dos estudiantes cumplen años el mismo día, lo que se denomina colisión.
Resolver una colisión es utilizar la información extra para averiguar cuál de dos o más diarios necesitamos.
La resolución de colisiones a través de una lista consiste simplemente en recorrer todas las entradas de la colisión una por una para encontrar una coincidencia. Arranca cada diario y mira de quién es.
Un subtítulo está organizando una tabla hash de los elementos implicados en la colisión, pero con un criterio diferente. Por ejemplo, por la hora de nacimiento del alumno.
Si te interesa el tema - te aconsejo un curso de MailRu en youtube sobre algoritmos y estructuras de datos.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Biblioteca de clases genéricas - errores, descripción, preguntas, peculiaridades de uso y sugerencias
Sergey Dzyublik, 2017.12.08 14:40
Los fundamentos de este tema son para los perezosos:
https://www.slideshare.net/mkurnosov/6-32402313
En realidad es mucho más complicado y se discute en la literatura pertinente o en buenos cursos de "algoritmos y estructuras de datos".
Gracias, la depuración ayudó. Hay pequeñas listas de colisiones. He revisado el hilo y me he horrorizado. Resulta que estaba en el tema...
A partir de ahora, puede haber añadido/cambiado algunos detalles/coeficientes.
¡Muchas gracias! Ayudó mucho su descripción.