Come si rimuove un elemento da un array (unidimensionale bidimensionale)? - pagina 6

 
Aliaksandr Hryshyn:
C'è un problema di definizione della dimensionalità?

Non c'è nessun problema con la definizione. Ci sono problemi nell'ottenere array di dimensioni diverse come parametro di una funzione.

 
Qui gli array non hanno più di 4 dimensioni. Quindi, potete scrivere 4 funzioni diverse e questo è tutto.
 
Ilya Malev:

Non c'è nessun problema con la definizione. Ci sono problemi nell'ottenere array di dimensioni diverse come parametro di una funzione.

Usate le classi per queste cose. Passare un'istanza di una classe con diversi array alla funzione...
 
Dmitry Fedoseev:
Gli array non hanno più di 4 dimensioni qui. Quindi, potete scrivere 4 funzioni diverse e questo è tutto.

Non potete assolutamente usare array di dimensioni maggiori di 1, e se volete manipolare qualcosa con diversi campi, potete usare un array di strutture o una lista di oggetti. Personalmente lo faccio sempre quando scrivo qualcosa io stesso. Ma nel codice di qualcun altro, che incontro anche io, mi imbatto anche in opzioni come un array multidimensionale. E qui inizia la parte divertente...

 
Aliaksandr Hryshyn:
Usate le classi per queste cose. Passare un'istanza di una classe con diversi array alla funzione...

Provate a definire una classe in modo che una chiamata di funzione applicata a un array di dimensioni diverse abbia lo stesso aspetto.

 
Ilya Malev:

Domande normali, avresti dovuto ignorare le parentesi nel titolo del thread. Senza conoscere il numero di elementi - è possibile. Se non si conosce la dimensionalità, non si può.

Lasciate che vi dica un terribile segreto. Un array è unidimensionale. Qualsiasi tipo. Te l'ho già detto...

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

Vi svelerò un terribile segreto. L'array è unidimensionale. Qualsiasi tipo. Te l'ho già detto...


Ilya Malev:

E cosa ha a che fare questo con il vostro compito (classe di compiti - lavoro unificato con array di diverse dimensioni tramite funzioni)?

 
Ilya Malev:

Provate a definire una classe in modo che una chiamata di funzione a un array di dimensioni diverse abbia lo stesso aspetto.

Voglio dire che dovreste definire l'array richiesto in una classe e passare un'istanza di questa classe alla funzione.
 

Un fenomeno interessante...

Quando si scrive una funzione per la propria collezione, si pone la domanda: è meglio farla funzionare velocemente (senza controllo), o a prova di errore, in modo che la ragionevolezza dei parametri possa essere controllata e corretta?

void ArrayDelete(int & a[],int Start,int Count=1){
   ArrayCopy(a,a,Start,Start+Count);
   ArrayResize(a,ArraySize(a)-Count);
}

O con una protezione infallibile, in modo che i parametri ragionevoli possano essere controllati e corretti? Qui si vede che la versione veloce non è degna di una collezione, perché è facile da scrivere e non è molto utile. E la variante con tutti i controlli è buona solo come pezzo da museo, perché non servono freni inutili. Ed è per questo che non vi serve affatto.

 
Aliaksandr Hryshyn:
Voglio dire che l'array richiesto dovrebbe essere definito in una classe e un'istanza di questa classe dovrebbe essere passata a una funzione.

Se guardiamo il problema in questo modo, allora gli array multidimensionali non dovrebbero essere dichiarati affatto - dovrebbero invece essere usati array di strutture con campi diversi. Ma la domanda è diversa - cosa possiamo fare con array esistenti di dimensioni arbitrarie (sconosciute in anticipo)?