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

Seric29  
Wie kann ich ein Element aus einem Array entfernen? Muss ich die Anzahl der darin gespeicherten Elemente kennen?
Ilya Malev  

Es gibt eine Funktion, die zwar noch niemand gesehen hat (weder in der Hilfe noch auf der Website), aber sie ist vorhanden.)


Aleksey Semenov  
Ilya Malev:

Es gibt eine Funktion, die zwar noch niemand gesehen hat (weder in der Hilfe noch auf der Website), aber sie ist vorhanden.)

Oh, eine geheime Funktion, und wie funktioniert sie?
Rashid Umarov  
Ilya Malev:

Es gibt eine Funktion, die zwar noch niemand gesehen hat (weder in der Hilfe noch auf der Website), aber sie ist vorhanden.)


Demnächst verfügbar

Alexey Viktorov  

Um ein einzelnes Element zu löschen, wird die Funktion

void OnStart()
{
 double array[];
 CopyOpen(_Symbol, PERIOD_CURRENT, 0, 6, array);
 ArrayPrint(array);
 dellArrayElement(3, array);
 ArrayPrint(array);
}/*******************************************************************/

void dellArrayElement(int shift, double &arr[])
{
 int arrSize = ArraySize(arr);
 if(shift > arrSize)
  return;
 if(shift < arrSize)
 ArrayCopy(arr, arr, shift, shift+1);
 ArrayResize(arr, arrSize-1);
}

Ergebnis

2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13612 1.13586 1.13614
2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13586 1.13614

Dann können Sie diese Funktion in den Typ bool umwandeln, so dass Sie ihre Ausführung kontrollieren können. Wenn Sie klug sind und die Werte kontrollieren können, die Sie an das Gerät senden, können Sie es trotzdem verwenden...

Denken Sie daran, dass Sie die Größe von statischen Arrays nicht verringern können.

Ilya Malev  
Alexey Viktorov:

Um ein einzelnes Element zu löschen, wird die Funktion

Ergebnis

Dann können Sie diese Funktion in den Typ bool umwandeln, so dass Sie ihre Ausführung kontrollieren können. Wenn Sie schlau sind und die Werte kontrollieren können, die Sie an das Gerät senden, können Sie es trotzdem verwenden...

Vergessen Sie nicht, dass Sie die Größe von statischen Arrays nicht verringern können.

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 :)

Seric29  
Alexey Viktorov:

Vergessen Sie nicht, dass statische Arrays nicht verkleinert werden können.

Ich verkleinere das Array nicht, ich entferne ein Element daraus, das sind unterschiedliche Dinge. 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, d.h. richtig verstanden? Wie schnell sind solche Experimente, bei denen das Programm viel geladen wird?

Seric29  
Aleksey Semenov:
Oh, eine geheime Funktion, und wie funktioniert sie?

In C++ gibt es solche Funktionen, man schließt die Bibliothek an und die Aktion wird ausgeführt. Aber wir berücksichtigen die Tatsache, dass mql nicht über solche Funktionen verfügt und wollen handschriftliche Funktionen verwenden.

Seric29  

Ich habe dies gefundenhttp://kvodo.ru/urok-7-2-massivyi-osnovnyie-operatsii.html (und auch dies https://purecodecpp.com/archives/1935)

Angenommen, wir müssendas m-te Element in der Anzahl vonn Elementenaus einem FeldX entfernen. Dazu schreibt man einfach das (m+1)-te Element anstelle des Elementsm, das (m+2)-te Element anstelle des (m+1)-ten und so weiter,n-1 anstelle von(n-2)und verwendetn-1Element, wenn man weiter mit diesem Array arbeitet:

cout<<"\n m="; cin>>m; //ввод номера элемента, подлежащего удалению
for (i=m; i<n-1; X[i+1],i++); //удаление m-го элемента
for (i=0; i<n-1; i++) cout<<X[i]<<"\t"; //вывод измененного массива
n--; //уменьшение количества элементов в массиве

Aber das ist mit C++. Hier müssen wir jedoch die Anzahl der im Array gespeicherten Elemente kennen. Sie müssen eine Funktion schreiben, die die Elemente so liest, wie sie geschrieben werden.

Seric29  
Ilya Malev:

Es gibt eine Funktion, die zwar noch niemand gesehen hat (weder in der Hilfe noch auf der Website), aber sie ist vorhanden.)


Wie funktioniert das?

int ArrayRemove()

In der Hilfe gibt es dazu keine Beschreibung, wo kann ich das nachlesen?

Grund der Beschwerde: