Es gibt ein Array, das eine Reihe von Daten des Typs 1,2,3,6,9,5,6,3,25,6,8,7,4 enthält, die Sie benötigen, um z.B. Werte 3 zu entfernen und das gleiche Array ohne 3 und Leerzeichen in der Ausgabe zu erhalten...
Ich bin auf der Suche nach dem schnellsten Weg, um ein Array von unnötigen Werten zu löschen...
Das folgende Beispiel kommt mir in den Sinn
Vielleicht gibt es einen wirtschaftlicheren und schnelleren Weg?
ArrayResize sollte aus Schleifen entfernt werden, und (wenn kämpfen für jeden LONG, Bedingungen prüfen und einzelne Resize am Ende)
Aber es ist typisch, dass man alles aus den Schleifen herausnimmt, was man später in großen Mengen machen kann oder gar nicht machen muss...
1. Umschreiben von array one[] in array work[] der gleichen Dimension, wobei unnötige Elemente entfernt und die benötigten Elemente an deren Stelle verschoben werden.
2. Umschreiben von array work[] in array two[] der neuen Dimension.
HH: Funktionsaufruf vom Schleifenoperator(ArraySize) entfernen.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; }
Hier ist eine solche Variante:
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)); }
Gibt die Anzahl der Elemente in dem gefilterten Array zurück. Kann automatisch verkleinert werden, wenn sie dynamisch ist.
Hier ist eine solche Variante:
Gibt die Anzahl der Elemente in dem gefilterten Array zurück. Kann automatisch verkleinert werden, wenn sie dynamisch ist.
Noch ein paar mehr (ein paar mehr Durchmesser des Bodens) und wir werden funktionsfähig sein :-)
set target [ filter $source [ lambda x { expr $x !=3 } ]
es ist tcl, in Lisp ist es noch kürzer
Am schnellsten ginge es mit ArrayCopy() und einer Schleife in umgekehrter Reihenfolge, damit die Elemente, die gelöscht werden, nicht verschoben werden.
ist nicht geeignet, da es eine Reihe von Strukturen geben kann, die Zeichenketten enthalten.
Eine hat 42 Produkte, eine andere hat 6, eine andere 30. Ich habe Angst, mir vorzustellen, was für ein Arschloch in diesen Fragen und Antworten steckt
Eine dumme Frage ist eine nicht gestellte Frage.
Ich habe mehrere Lösungen für das Problem, aber ich suche weiter nach besseren Lösungen und lerne von anderen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Es gibt ein Array, das eine Reihe von Daten des Typs 1,2,3,6,9,5,6,3,25,6,8,7,4 enthält, die Sie benötigen, um z.B. Werte 3 zu entfernen und das gleiche Array ohne 3 und Leerzeichen in der Ausgabe zu erhalten...
Ich bin auf der Suche nach dem schnellsten Weg, um ein Array von unnötigen Werten zu löschen...
Das folgende Beispiel kommt mir in den Sinn
Vielleicht gibt es einen billigeren und schnelleren Weg?