¿Puedo pensar en una implementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) hacia y desde una matriz int[]?
///
Simplemente, después de describir una estructura, escribe unas líneas más con una unión que incluya esta estructura y un array.
struct SS{
int a;
double b;
};
union UX{
SS s;
char a[sizeof(S)];
};
Incluso es posible no escribir después de cada estructura, sino hacer una plantilla - lo que sea conveniente para usted.
¿Puedo pensar en una implementación rápida para convertir una matriz de estructuras (longitud múltiplo de sizeof(int)) a y desde una matriz int[]?
En general, la solución se encuentra en el mismo enlace, pero debido a la versatilidad hay un freno allí. Así que la multiplicidad es una condición adicional comprensible.
MQL5: Se ha añadido la propiedad pack( integer_value ) para las estructuras. Permite establecer la alineación de los campos dentro de la estructura, puede ser necesario cuando se trabaja con DLL. Para integer_value puede tener los valores 1, 2, 4, 8 y 16. Si la propiedad no está definida, la alineación por defecto es de 1 byte - pack(1).
Ejemplo de uso:
//+------------------------------------------------------------------+//| Default packing |//+------------------------------------------------------------------+struct A
{
char a;
int b;
};
//+------------------------------------------------------------------+//| Specified packing |//+------------------------------------------------------------------+struct B pack(4)
{
char a;
int b;
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
Print("sizeof(A)=",sizeof(A));
Print("sizeof(B)=",sizeof(B));
}
//+------------------------------------------------------------------+
La salida:
sizeof(A)=5
sizeof(B)=8
Más información sobre la alineación en las estructuras está disponible en MSDN.
¿Puedo hacer una lluvia de ideas sobre una implementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) hacia y desde una matriz int[]?
En el caso general, la solución está en el mismo enlace, pero debido a la universalidad hay frenos. Por lo tanto, la multiplicidad es una condición adicional comprensible.
Aquí hay otra tarea interesante: hacer una función de ordenación de matrices más rápida que la incorporada ArraySort.
¿Está garantizado que el tamaño de todas las estructuras se divide entre el tamaño de todas las variables?
¿Puedo pensar en una implementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) hacia y desde una matriz int[]?
///
Simplemente, después de describir una estructura, escribe unas líneas más con una unión que incluya esta estructura y un array.
Incluso es posible no escribir después de cada estructura, sino hacer una plantilla - lo que sea conveniente para usted.
¿Está garantizado el tamaño de todas las estructuras dividido por el tamaño de todas las variables?
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia
Obtención del número de decimales de cualquier número (no sólo de las comillas) evitando Digits() en MQL4 y MQL5
fxsaber, 2018.12.07 15:12
¿Puedo pensar en una implementación rápida para convertir una matriz de estructuras (longitud múltiplo de sizeof(int)) a y desde una matriz int[]?
En general, la solución se encuentra en el mismo enlace, pero debido a la versatilidad hay un freno allí. Así que la multiplicidad es una condición adicional comprensible.
Esto también apareció.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Nueva versión de MetaTrader 5 build 1930: Ventana de gráficos flotantes y biblioteca .Net en MQL5
MetaQuotes Software Corp., 2018.10.25 17:18
Si la propiedad no está definida, la alineación por defecto es de 1 byte - pack(1).
Ejemplo de uso:
La salida:
Más información sobre la alineación en las estructuras está disponible en MSDN.
Simplemente, después de describir la estructura, escribe unas líneas más con una unión que incluya esta estructura y el array.
Puede incluso no escribir después de cada estructura, sino hacer una plantilla, lo que sea más conveniente.
No lo entiendo. Si quieres participar, escribe tu variante.
¿Puedo hacer una lluvia de ideas sobre una implementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) hacia y desde una matriz int[]?
¿por qué a int? y no a char?
(y será más largo - se copiará más rápido)
¿Por qué Int?
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia
Obtención del número de decimales de cualquier número (no sólo de las comillas) evitando Digits() en MQL4 y MQL5
fxsaber, 2018.12.07 15:12
La aplicación práctica es el intercambio rápido de datos a través de los recursos. Mi variante es demasiado genérica, por lo que es lenta.
Al parecer, el tuyo ya es más rápido :)
Intentaré acelerarlo considerablemente.
No lo entiendo. Si desea participar, escriba su opción.
Lo hice.
En el caso general, la solución está en el mismo enlace, pero debido a la universalidad hay frenos. Por lo tanto, la multiplicidad es una condición adicional comprensible.
Esto también aparece.
¿Quién controlará esta multiplicidad?