Wie entferne ich ein Element aus einem Array (eindimensional und zweidimensional)? - Seite 2

 
Seric29:

wie die Funktion funktioniert

Es gibt keine Beschreibung im Handbuch, wo man das nachlesen kann?

Lesen Sie diesen Thread? Admin antwortete - Beschreibung folgt in Kürze

 
Seric29:

Ich reduziere nicht die Größe des Arrays, sondern entferne ein Element daraus...

void  ArrayFill( 
   void&  array[],       // массив 
   int    start,         // индекс начального элемента 
   int    count,         // количество элементов 
   void   value          // значение, которым заполняется массив 
   );

Würde das nicht funktionieren?

 
Ilya Malev:

Der Genosse hat geschrieben: eindimensional und zweidimensional. Ihre Funktion funktioniert nicht mit zweidimensionalen. Zeigen Sie mir, wie man eine Funktion mit demselben Namen für beide Funktionen verwenden kann :)

Ich habe nichts von zweidimensional gesehen. Aber die zweidimensionale an sich auch kopiert, nur leicht unterschiedliche Werte, von welchem Index zu Array Pickup schreiben und von welchem Index aus der Quelle zu lesen. Im Prinzip kann das Problem für 3-4 dimensionale Arrays, die in mql erlaubt sind, gelöst werden

 
Seric29:

Ich reduziere nicht die Größe des Arrays, sondern ich entferne ein Element daraus, was zwei verschiedene Dinge sind. Ich verstehe, dass Ihre Funktion den Wert1.13612 gelöscht hat, er ist in der ZeiledellArrayElement(3, array) angegeben; d.h. das 3. Element wird aus dem Array entfernt, nicht wahr? Wie schnell sind solche Experimente, wie oft laden sie das Programm?

Aber wenn die Bedingung

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wie entferne ich ein Element aus einem Array (eindimensional und zweidimensional)?

Seric29, 2018.12.21 23:50

Wie kann man ein Element aus einem Array entfernen? Ist es notwendig, die Anzahl der darin enthaltenen Elemente zu kennen?

dann sollte die Größe des Feldes natürlich reduziert werden. Ist es nicht so?

Ja, in diesem Beispiel wurde das 3. Element des Arrays entfernt. Geschwindigkeiten und einige Körperteile werden in anderen Branchen gemessen. In diesem Fall ist die Geschwindigkeit ganz normal. Um ungefähre Geschwindigkeitswerte zu erhalten, müssen Sie mehrere Durchläufe mit mehreren hundert Löschungen durchführen. Warum sollte ich das tun wollen?

 
https://www.mql5.com/ru/forum/289594
Очистка массива от заданного (ых) элементов
Очистка массива от заданного (ых) элементов
  • 2018.11.12
  • www.mql5.com
Есть массив содержащий набор данных по типу 1,2,3,6,9,5,6,3,25,6,8,7,4 нужно удалить например значения 3 и на выходе получить тот же массив без 3 и...
 
Alexey Viktorov:

Ich habe nichts über den zweidimensionalen gesehen. Aber die zweidimensionale ist auch in sich selbst kopiert, nur leicht unterschiedliche Werte aus dem Index zu schreiben, um das Array und den Index zu lesen aus der Quelle. Im Prinzip kann das Problem für 3-4 dimensionale Arrays, die in mql erlaubt sind, gelöst werden

Ich vermute, dass es prinzipiell lösbar ist. Nur scheint sie nicht für eine Funktion mit demselben Namen lösbar zu sein.

 
Ilya Malev:

Ich vermute, dass es prinzipiell lösbar ist. Nur scheint sie nicht für eine Funktion mit demselben Namen lösbar zu sein.

Warum? Machen Sie es wie eine Grundschulklasse.

Etwas wie

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Er wurde "an Ort und Stelle" geschrieben, daher entschuldige ich mich für mögliche Ungenauigkeiten.

 

Wenn die Reihenfolge der Elemente im Array nicht wichtig ist, ist es schnell genug erledigt:

#define  ARRAY_RESERVE_SIZE    1000

template<typename T>
void DeleteElementFromArray(T &array[], int elementToDelete)
{  
   int arraySize = ArraySize(array);
   if (elementToDelete < 0 || elementToDelete >= arraySize)
      return;
      
   array[elementToDelete] = array[arraySize - 1];
   ArrayResize(array, arraySize - 1, ARRAY_RESERVE_SIZE);
}

Dies gilt für ein eindimensionales Array. Zweidimensionale und größere Arrays sind eigentlich eindimensionale Arrays. Ein eindimensionales Feld kann logischerweise als N-dimensionales Feld dargestellt werden. Das heißt, ein eindimensionales Array ist eigentlich immer ausreichend.

 
Alexey Viktorov:

Warum? Machen Sie es wie eine Grundschulklasse.

Etwas wie...

Es ist spontan geschrieben, entschuldigen Sie also eventuelle Ungenauigkeiten.

Haben Sie versucht, es zu kompilieren?

 
Ilya Malev:

Haben Sie versucht, dies zu kompilieren?

Sie haben noch nicht herausgefunden, wie sie den Compiler direkt auf der Forumsseite einbinden können.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wie entfernt man ein Element aus einem Array (eindimensional und zweidimensional)?

Alexey Viktorov, 2018.12.22 21:25

Und warum? Machen Sie es wie eine Grundschulklasse.

Etwa so.

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Von Hand" geschrieben, daher Entschuldigung für mögliche Ungenauigkeiten.


Grund der Beschwerde: