Hay un array que contiene un conjunto de datos de tipo 1,2,3,6,9,5,6,3,25,6,8,7,4 hay que eliminar por ejemplo los valores 3 y obtener el mismo array sin 3 y espacios vacíos en la salida...
Estoy buscando la forma más rápida de borrar un array de valores innecesarios...
Me viene a la mente el siguiente ejemplo
¿Quizás haya una forma más económica y rápida?
ArrayResize debe ser eliminado de los bucles, y (si se lucha por cada LONG, comprobar las condiciones y el único Resize al final)
Pero es un poco típico sacar todo de los bucles, lo que se puede hacer después en bloque o no hacerlo...
1. Reescribe la matriz uno[] en una matriz trabajo[] de la misma dimensión, eliminando los elementos innecesarios y desplazando los elementos necesarios en su lugar.
2. Reescribe el array trabajo[] en el array dos[] de la nueva dimensión.
HH: Eliminar la llamada a la función del operador de bucle(ArraySize).int ArrayDeleteEmpty(const int del, int &one[]) { int i = ArrayBsearch(one, del), y = ArraySize(one)-1; if(one[i] != del) return 0; for(; i<y; i++) one[i] = one[i+1]; ArrayResize(one, y); return y; }
Aquí hay una variante como esta:
template<typename T> int arrayFilter(T &data[], const T value) { int dst = 0, src = 0; for(; src < ArraySize(data); src++) { if(data[src] != value) { if(dst != src) { data[dst] = data[src]; } dst++; } } if(dst < src) { ArrayResize(data, dst); // will only work with dynamic array } return dst; } void OnStart() { long array[] = {1, 2, 3, 6, 9, 5, 6, 3, 25, 6, 8, 7, 4}; ArrayPrint(array, 0, NULL, 0, arrayFilter<long>(array, 3)); }
Devuelve el número de elementos del array filtrado. Puede reducir automáticamente su tamaño si es dinámico.
Aquí hay una variante como esta:
Devuelve el número de elementos del array filtrado. Puede reducir automáticamente su tamaño si es dinámico.
Unos cuantos más (unos cuantos diámetros más de suelo) y llegaremos a la funcionalidad :-)
set target [ filter $source [ lambda x { expr $x !=3 } ]
es tcl, es aún más corto en lisp
La forma más rápida sería con ArrayCopy() y un bucle de vuelta para evitar mover los elementos que se van a borrar.
no es adecuado, ya que puede haber una matriz de estructuras que contengan cadenas.
Uno tiene 42 productos, otro tiene 6, otro tiene 30. Me da miedo imaginarme el gilipollas que hay dentro con estas preguntas y respuestas
Una pregunta tonta es una pregunta no formulada.
Tengo varias soluciones al problema, pero sigo buscando mejores soluciones y aprendiendo de los demás.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Hay un array que contiene un conjunto de datos de tipo 1,2,3,6,9,5,6,3,25,6,8,7,4 hay que eliminar por ejemplo los valores 3 y obtener el mismo array sin 3 y espacios vacíos en la salida...
Estoy buscando la forma más rápida de borrar un array de valores innecesarios...
Me viene a la mente el siguiente ejemplo
¿Quizás haya una forma más barata y rápida?