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

 
Aliaksandr Hryshyn:
Há algum problema com a definição da dimensionalidade?

Não há nenhum problema com a definição. Há problemas com a obtenção de matrizes de diferentes dimensões como parâmetro de função.

 
As matrizes não têm mais de 4 dimensões aqui. Assim, você pode escrever 4 funções diferentes e pronto.
 
Ilya Malev:

Não há nenhum problema com a definição. Há problemas com a obtenção de matrizes de diferentes dimensões como parâmetro de função.

Use aulas para tais coisas. Passar uma instância de uma classe com matrizes diferentes para a função...
 
Dmitry Fedoseev:
As matrizes não têm mais de 4 dimensões aqui. Assim, você pode escrever 4 funções diferentes e pronto.

Você não pode usar matrizes de tamanho superior a 1, e se você quiser manipular algo com campos diferentes, você pode usar uma variedade de estruturas ou uma lista de objetos. Eu mesmo sempre faço isso quando escrevo algo. Mas no código de outra pessoa, que eu também encontro, também me deparo com opções como uma matriz multidimensional. E aqui começa a parte divertida...

 
Aliaksandr Hryshyn:
Use aulas para tais coisas. Passar uma instância de uma classe com matrizes diferentes para a função...

Tente definir uma classe para que uma chamada de função se aplique a uma série de dimensões diferentes e tenha a mesma aparência.

 
Ilya Malev:

Perguntas normais, você deveria ter ignorado os parênteses no título da linha. Sem saber o número de elementos - você pode. Se você não conhece a dimensionalidade, não pode.

Deixe-me contar-lhe um segredo terrível. Uma matriz é unidimensional. Qualquer tipo. Eu já lhe disse...

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

Vou lhe contar um segredo terrível. A matriz é unidimensional. Qualquer tipo. Eu já lhe disse...


Ilya Malev:

E o que isso tem a ver com sua tarefa (classe de tarefas - trabalho unificado com matrizes de diferentes dimensões através de funções)?

 
Ilya Malev:

Tente definir uma classe para que uma chamada de função para um conjunto de dimensões diferentes pareça a mesma.

É preciso definir a(s) matriz(s) necessária(s) em uma classe e passar a função uma instância dessa classe.
 

Um fenômeno interessante...

Quando você escreve uma função para sua coleção, surge a pergunta: é melhor fazê-la funcionar rápido (sem verificação), ou infalível, para que a razoabilidade dos parâmetros possa ser verificada e corrigida?

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

Ou com proteção infalível, para que parâmetros razoáveis possam ser verificados e ajustados? Aqui você vê que a versão rápida não é digna de uma coleção, porque é fácil de escrever e não é muito útil. E a variante com todos os cheques é boa apenas como uma peça de museu, porque não é necessário freios desnecessários. E é por isso que você não precisa disso em absoluto.

 
Aliaksandr Hryshyn:
Quero dizer que a(s) matriz(s) necessária(s) deve(m) ser definida(s) em uma classe e uma instância desta classe deve ser passada para uma função.

Se olharmos para o problema desta forma, então as matrizes multidimensionais não devem ser declaradas de forma alguma - ao invés disso, devem ser usadas matrizes de estruturas com campos diferentes. Mas a questão é diferente - o que podemos fazer com a matriz existente de dimensões arbitrárias (desconhecidas de antemão)?