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

 
Seric29:

como funciona a função

Não há descrição no manual onde ler sobre isso?

Você lê esta linha? Admin respondeu - descrição em breve

 
Seric29:

Não reduzo o tamanho da matriz mas removo um elemento da mesma.

void  ArrayFill( 
   void&  array[],       // массив 
   int    start,         // индекс начального элемента 
   int    count,         // количество элементов 
   void   value          // значение, которым заполняется массив 
   );

Isso não funcionaria?

 
Ilya Malev:

O camarada escreveu: unidimensional e bidimensional. Sua função não funciona com bidimensionais. Mostre-me como fazer uma função com o mesmo nome funcionar para ambos :)

Eu não vi nada sobre bidimensional. Mas o bidimensional em si também copiou, apenas valores ligeiramente diferentes dos quais índice para escrever para o array pickup e de qual índice para ler a partir da fonte. Em princípio, o problema pode ser resolvido para matrizes de 3-4 dimensões permitidas em mql

 
Seric29:

Não estou reduzindo o tamanho da matriz, mas estou removendo um elemento da mesma, que são coisas diferentes. Entendo que sua função eliminou o valor1.13612, está especificada na linhadellArrayElement(3, array); ou seja, o 3º elemento é removido do array, não é mesmo? Qual é a velocidade de tais experimentos, quanto eles carregam o programa?

Mas se a condição for

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Como remover um elemento de uma matriz (bidimensional unidimensional)?

Seric29, 2018.12.21 23:50

Como se remove um elemento de uma matriz? É necessário saber o número de elementos armazenados nele?

então, naturalmente, o tamanho da matriz deve ser reduzido. Não é assim?

Sim, por exemplo, foi o terceiro elemento do conjunto que foi removido. As velocidades e algumas partes do corpo são medidas em outros ramos. Neste caso, a velocidade é bastante normal. É preciso fazer várias corridas de várias centenas de deleções para valores aproximados de velocidade. Por que eu iria querer fazer isso?

 
https://www.mql5.com/ru/forum/289594
Очистка массива от заданного (ых) элементов
Очистка массива от заданного (ых) элементов
  • 2018.11.12
  • www.mql5.com
Есть массив содержащий набор данных по типу 1,2,3,6,9,5,6,3,25,6,8,7,4 нужно удалить например значения 3 и на выходе получить тот же массив без 3 и...
 
Alexey Viktorov:

Eu não vi nada sobre o bidimensional. Mas o bidimensional também é copiado em si mesmo, apenas valores ligeiramente diferentes de qual índice escrever para a matriz e qual índice ler a partir da fonte. Em princípio, o problema pode ser resolvido para matrizes de 3-4 dimensões permitidas em mql

Acho que , em princípio, é solvível. Exceto que não parece ser solvível para uma função com o mesmo nome.

 
Ilya Malev:

Acho que , em princípio, é solvível. Exceto que não parece ser solvível para uma função com o mesmo nome.

Por quê? Faça-o como uma classe elementar.

Algo como

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Foi escrito "no local", portanto, peça desculpas por possíveis imprecisões.

 

Se a ordem dos elementos da matriz não for importante, ela é feita com rapidez suficiente:

#define  ARRAY_RESERVE_SIZE    1000

template<typename T>
void DeleteElementFromArray(T &array[], int elementToDelete)
{  
   int arraySize = ArraySize(array);
   if (elementToDelete < 0 || elementToDelete >= arraySize)
      return;
      
   array[elementToDelete] = array[arraySize - 1];
   ArrayResize(array, arraySize - 1, ARRAY_RESERVE_SIZE);
}

Isto é para uma matriz unidimensional. As matrizes bidimensionais e maiores são na verdade matrizes unidimensionais. Uma matriz unidimensional pode logicamente ser representada como uma matriz N-dimensional. Isto é, de fato, uma matriz unidimensional é sempre suficiente.

 
Alexey Viktorov:

Por quê? Faça-o como uma classe elementar.

Algo como...

Está escrito na mosca, então me desculpem por qualquer imprecisão.

Você já tentou compilá-lo?

 
Ilya Malev:

Você já tentou compilar isto?

Eles ainda não descobriram como fazer o compilador diretamente no site do fórum.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Como remover elementos da matriz (bidimensional unidimensional)?

Alexey Viktorov, 2018.12.22 21:25

Por quê? Faça-o como uma classe elementar.

Algo parecido.

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

Escrito "à mão", portanto, peça desculpas por possíveis imprecisões.