Comment supprimer un élément d'un tableau (unidimensionnel bidimensionnel) ? - page 4

 
Dmitry Fedoseev:

Quelles méthodes ? Quelles signatures ?

Toutes les méthodes.

 
Ilya Malev:

Toutes les méthodes.

Qu'est-ce que ça a à voir avec ça ?

 
Dmitry Fedoseev:

Oui, nous travaillons comme avec les unidimensionnels. Nous n'avons pas besoin de décrire la structure des données - nous lisons tout sur une ligne.

 
ArrayCopy() fonctionne avec des pointeurs.
 
Dmitry Fedoseev:

Qu'est-ce que ça a à voir avec ça ?

Vous ne pouvez pas définir une fonction (par exemple, supprimer un élément) avec le même nom (par exemple, ArrayRemove) définie de la même manière pour des tableaux de tailles différentes (à moins que vous ne soyez un développeur de compilateur MQL)

En outre, vous ne pourrez pas définir une telle fonction avec le même nom, en surchargeant plusieurs variantes d'appels

Vous devrez l'écrire comme ceci

ArrayRemove(var&[],int)

ArrayRemove2(var&[][],int)

ArrayRemove3(var&[][],int)

ArrayRemove4(var&[][][][],int)

La gestion d'un tableau multidimensionnel comme un tableau unidimensionnel n'a donc aucun sens, à moins que vous ne vouliez redéfinir toutes les fonctions de tableau dans chacune des classes qui les utilisent.

 
Très bien, alors.
 
Ilya Malev:

Vous ne pouvez pas définir une fonction (par exemple supprimer un élément) avec le même nom (par exemple ArrayRemove) définie de la même manière pour des tableaux de tailles différentes (à moins que vous ne soyez un développeur de compilateur MQL)

En outre, vous ne pourrez pas définir une telle fonction avec le même nom, en surchargeant plusieurs variantes d'appels

Vous devrez l'écrire comme ceci

ArrayRemove(var&[],int)

ArrayRemove2(var&[][],int)

ArrayRemove3(var&[][],int)

ArrayRemove4(var&[][][][],int)

Ainsi, traiter un tableau multidimensionnel comme un tableau unidimensionnel n'a aucun sens, à moins que vous ne vouliez redéfinir toutes les fonctions de tableau dans chaque classe qui les utilise.

Oui, mais ce n'est pas une si mauvaise chose.

 
Ilya Malev:

Vous ne pouvez pas définir une fonction (par exemple supprimer un élément) avec le même nom (par exemple ArrayRemove) définie de la même manière pour des tableaux de tailles différentes (à moins que vous ne soyez un développeur de compilateur MQL)

En outre, vous ne pourrez pas définir une telle fonction avec le même nom, en surchargeant plusieurs variantes d'appels

Vous devrez l'écrire comme ceci

ArrayRemove(var&[],int)

ArrayRemove2(var&[][],int)

ArrayRemove3(var&[][],int)

ArrayRemove4(var&[][][][],int)

Manipuler un tableau multidimensionnel comme un tableau unidimensionnel n'a donc aucun sens, à moins que vous ne souhaitiez redéfinir toutes les fonctions permettant de travailler avec des tableaux dans chacune des classes qui les utilisent.

Ilya, tu passes de la technique de programmation à l'énoncé du problème.

Ramper à l'envers, faire des choses à l'envers.

Ma petite-fille est déjà endormie, sinon elle aurait attiré votre attention sur le fait que les éléments du tableau de la mémoire MT sont disposés en continu.

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

les éléments de la matrice dans la mémoire MT sont disposés en continu.

Et quel est, selon vous, le rapport avec la tâche à accomplir (classe de tâches - travail unifié avec des tableaux de différentes dimensions via des fonctions) ?

 

Par exemple, vous souhaitez créer une fonction permettant de supprimer un élément d'un tableau, quelle que soit sa dimension. Ou bien vous voulez créer une classe qui fonctionne avec des tableaux de différentes dimensions. Pensez-vous pouvoir faire cela dans mql ?