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

 
Seric29:

come funziona la funzione

Non c'è una descrizione nel manuale dove leggere?

Leggi questo thread? Admin ha risposto - descrizione in arrivo

 
Seric29:

Non riduco la dimensione dell'array ma rimuovo un elemento da esso...

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

Non funzionerebbe?

 
Ilya Malev:

Il compagno ha scritto: unidimensionale e bidimensionale. La vostra funzione non funziona con le due dimensioni. Mostrami come far funzionare una funzione con lo stesso nome per entrambi :)

Non ho visto nulla di bidimensionale. Ma il bidimensionale in sé anche copiato, solo valori leggermente diversi da quale indice per scrivere al pickup array e da quale indice per leggere dalla fonte. In linea di principio, il problema può essere risolto per array di 3-4 dimensioni consentite in mql

 
Seric29:

Non sto riducendo la dimensione dell'array, ma sto rimuovendo un elemento da esso, che sono cose diverse. Ho capito che la vostra funzione ha eliminato il valore1.13612, è specificato nella lineadellArrayElement(3, array); cioè il 3° elemento viene rimosso dall'array, vero? Qual è la velocità di questi esperimenti, quanto caricano il programma?

Ma se la condizione è

Forum sul trading, sistemi di trading automatico e test di strategia

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

Seric29, 2018.12.21 23:50

Come si rimuove un elemento da un array? È necessario conoscere il numero di elementi memorizzati in esso?

allora naturalmente la dimensione dell'array dovrebbe essere ridotta. Non è così?

Sì, per l'esempio era il 3° elemento dell'array ad essere rimosso. Le velocità e alcune parti del corpo sono misurate in altri rami. In questo caso la velocità è abbastanza normale. Bisogna fare diverse esecuzioni di diverse centinaia di cancellazioni per ottenere dei valori di velocità approssimativi. Perché dovrei volerlo fare?

 
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:

Non ho visto nulla di quello bidimensionale. Ma il bidimensionale è anche copiato in se stesso, solo valori leggermente diversi da quale indice scrivere nell'array e quale indice leggere dalla fonte. In linea di principio, il problema può essere risolto per array di 3-4 dimensioni consentite in mql

Immagino che sia risolvibile in linea di principio. Solo che non sembra essere risolvibile per una funzione con lo stesso nome.

 
Ilya Malev:

Immagino che sia risolvibile in linea di principio. Solo che non sembra essere risolvibile per una funzione con lo stesso nome.

Perché? Fatelo come una classe elementare.

Qualcosa come

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[][])
 {
  // тело функции для двухмерного массива
 };

È stato scritto "sul momento", quindi mi scuso per eventuali imprecisioni.

 

Se l'ordine degli elementi nell'array non è importante, viene fatto abbastanza velocemente:

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

Questo è per un array unidimensionale. Gli array bidimensionali e più grandi sono in realtà array unidimensionali. Un array unidimensionale può essere logicamente rappresentato come un array n-dimensionale. Cioè, in effetti, un array unidimensionale è sempre sufficiente.

 
Alexey Viktorov:

Perché? Fatelo come una classe elementare.

Qualcosa come...

È scritto di getto, quindi scusatemi per eventuali imprecisioni.

Avete provato a compilarlo?

 
Ilya Malev:

Hai provato a compilare questo?

Non hanno ancora capito come fare il compilatore direttamente sul sito del forum.

Forum sul trading, sistemi di trading automatico e test di strategia

Come rimuovere un elemento dall'array (unidimensionale bidimensionale)?

Alexey Viktorov, 2018.12.22 21:25

Perché? Fatelo come una classe elementare.

Qualcosa come.

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[][])
 {
  // тело функции для двухмерного массива
 };

Scritto "a mano", quindi mi scuso per eventuali imprecisioni.


Motivazione: