Como remover um elemento de uma matriz (bidimensional unidimensional)? - página 9

 
Você poderia, é claro, ignorar os custos e despesas e reescrever um array de qualquer dimensão em um array unidimensional recém-criado em #define antes de chamar a função (e depois reescrevê-la de volta), mas os custos serão lamentáveis.
 
Alexey Viktorov:

Por que isso não ajuda?

...

Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é uma decisão muito sábia.

 
Dmitry Fedoseev:

Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é exatamente uma decisão sábia.

Sim, eu já percebi que é uma perda de tempo.

 
Em resumo, é um tema que vale a pena, mas é muito amplo e complexo para mim, algo que leva anos de experiência para chegar a ele.
 
Seric29:
Em resumo, é um tema que vale a pena, mas é muito amplo e complicado para mim, algo que leva anos de experiência para chegar a ele.

Não entre em muitos detalhes, eles querem tornar tudo muito universal, mas você pode viver muito bem sem ele.

 
Na verdade, na primeira resposta à linha, foi dada uma receita universal. Você só tem que ligá-lo e testá-lo você mesmo, mas não pode mastigá-lo todo e colocá-lo em sua boca, não é mesmo?
 
Ilya Malev:
Na verdade, na primeira resposta da linha, foi dada uma receita universal. Você só precisa ligá-lo e testá-lo você mesmo, mas não pode mastigá-lo todo e colocá-lo em sua boca, não é mesmo?

Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo a uma matriz unidimensional e de volta, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Eu não entendi a definição e os custos deploráveis.

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

Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo para uma matriz unidimensional e para trás, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Não entendo o que você quer dizer sobre o custo e o custo deplorável.

Não, pelo contrário, não é sério, apenas TC explicou novamente onde procurar uma solução (o primeiro posto é mais provável que funcione, embora eu não tenha verificado). E então começou todo tipo de conversa :)

Embora a situação seja triste com estas matrizes em μl na verdade, outra coisa é que elas não são necessárias em 99% dos casos. Quando você tem uma cabeça sobre seus ombros, qualquer codificador usa estruturas ou mesmo objetos.

A definição que escrevi resolve o problema que eu estabeleci)) - Uma chamada para o ArrayDel executar código, escrito por Dmitry, para diferentes matrizes. É verdade, isto não é uma função, mas um "cataplasma de homem morto", como dizem. Falando em definir custos, se você realmente quiser executar um parâmetro int ar[] para qualquer matriz, você pode fazer o seguinte (isto é uma simplificação, na verdade o número de medidas também deve ser passado para lá):


#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 );

}