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

 
Man könnte natürlich die Kosten und den Aufwand ignorieren und ein Array beliebiger Dimension in ein neu erstelltes 1-dimensionales Array in #define umschreiben, bevor man die Funktion aufruft (und es dann wieder zurückschreiben), aber die Kosten werden erbärmlich sein.
 
Alexey Viktorov:

Warum hilft das nicht?

...

Denn weder die Anzahl der Array-Dimensionen noch die Größe einer der Dimensionen lösen eine Überladung aus. Und die Übergabe von Parametern, die automatisch definiert werden können, an eine Funktion ist keine sehr kluge Entscheidung.

 
Dmitry Fedoseev:

Denn weder die Anzahl der Array-Dimensionen noch die Größe einer der Dimensionen lösen eine Überladung aus. Und die Übergabe von Parametern, die automatisch definiert werden können, an eine Funktion ist nicht gerade eine kluge Entscheidung.

Ja, ich habe bereits erkannt, dass es Zeitverschwendung ist.

 
Alles in allem ist es ein lohnendes Thema, aber für mich ist es sehr umfangreich und komplex, etwas, für das man jahrelange Erfahrung braucht.
 
Seric29:
Alles in allem ist es ein lohnendes Thema, aber für mich ist es sehr umfangreich und kompliziert, etwas, für das man jahrelange Erfahrung braucht.

Gehen Sie nicht zu sehr ins Detail, sie wollen alles zu universell machen, aber man kann auch gut ohne sie leben.

 
In der ersten Antwort auf dieses Thema wurde ein Universalrezept angegeben. Man muss es nur einschalten und selbst ausprobieren, aber man kann nicht alles zerkauen und in den Mund nehmen, oder?
 
Ilya Malev:
Eigentlich wurde in der ersten Antwort des Threads ein Universalrezept angegeben. Sie müssen es nur einschalten und selbst ausprobieren, aber Sie können es nicht ganz zerkauen und in den Mund stecken, oder?

Ilja, nimmst du das Thema wirklich so ernst? Nur um ein bisschen herumzuspielen und ein bisschen Spaß zu haben... Sie haben eine funktionierende Antwort gegeben: alles zu einem eindimensionalen Array und zurück, unabhängig von der Dimensionalität. Meine Antwort ist dieselbe wie Ihre: Es gibt nur kleine technische Details, die das Wesentliche nicht verändern. Ich habe die Definition und die beklagenswerten Kosten nicht verstanden.

 
Алексей Тарабанов:

Ilja, nimmst du das Thema wirklich so ernst? Nur um ein bisschen herumzuspielen und ein bisschen Spaß zu haben... Sie haben eine funktionierende Antwort gegeben: alles zu einem eindimensionalen Array und zurück, unabhängig von der Dimensionalität. Meine Antwort ist dieselbe wie Ihre: Es gibt nur kleine technische Details, die das Wesentliche nicht verändern. Ich verstehe nicht, was Sie mit den Kosten und den beklagenswerten Kosten meinen.

Nein, im Gegenteil ist nicht ernst, ich habe gerade TC wieder erklärt, wo für eine Lösung zu suchen (erster Beitrag ist am ehesten zu arbeiten, obwohl ich nicht überprüfen). Und dann fing alles Mögliche an zu plappern :)

Obwohl die Situation mit diesen Arrays in der Tat traurig ist, ist eine andere Sache, dass sie in 99% der Fälle nicht benötigt werden. Wenn Sie einen Kopf auf den Schultern haben, verwendet jeder Programmierer Strukturen oder sogar Objekte.

Die Definition, die ich geschrieben habe, löst das Problem, das ich gestellt habe)) - Ein Aufruf von ArrayDel führt den von Dmitry geschriebenen Code für verschiedene Arrays aus. Es handelt sich zwar nicht um eine Funktion, aber um einen "Umschlag für einen toten Mann", wie man sagt. Apropos Definitionskosten: Wenn Sie wirklich einen int ar[]-Parameter für ein beliebiges Array verwenden möchten, können Sie wie folgt vorgehen (dies ist eine Vereinfachung, eigentlich sollte die Anzahl der Messungen dort ebenfalls übergeben werden):


#property strict

#define  PackAndDel(A,S,C) { int tmp[]; ArrayCopy(tmp,A); ArrayDelete(tmp,S,C); ArrayCopy(A,tmp); }

void ArrayDelete(int &ar[], int start, int count)
 {

  // ..... ;

 }



void OnStart ()

{

  int ar1[];

  int ar2[][5];

  int ar3[][6][2];

  PackAndDel( ar1, 0, 1 );

  PackAndDel( ar2, 4, 1 );

  PackAndDel( ar3, 1, 3 );

}