Copiare l'array "in se stesso", iniziando dalla posizione accanto a quella da cancellare e scrivendo da quella da cancellare. E poi ridimensionare come suggerito da Grigori.S.B
È interessante, se ho capito bene, è necessario usare questa funzione?
intArrayCopy(
void& dst_array[], // куда копируем constvoid& src_array[], // откуда копируем int dst_start=0, // с какого индекса пишем в приемник int src_start=0, // с какого индекса копируем из источника int count=WHOLE_ARRAY// сколько элементов
);
Immagino che non l'abbiate notato, potete guardare sopra, tutte le domande riguardavano MQL5.
Capisco che la differenza non è cruciale a volte, ma tuttavia. La funzione che hai citato ridimensiona l'array, forse tagliando elementi extra se la dimensione è ridotta.
Questo non è ciò che è necessario. È necessario rimuovere un elemento trovandolo per valore. Ho provato anch'io questa funzione, ne ho scritto nel #23. Grazie comunque.
Anche io non ci ho fatto caso. mql5 ha la funzione ArrayRemove e nessun problema.
Alexey Viktorov: Per un array bidimensionale, è necessario moltiplicare il numero di riga per la cancellazione per 2. Per una matrice tridimensionale moltiplicare per 3...
Non capisco bene questo, potresti elaborarlo, o meglio ancora, mostrarmi la modifica su un pezzo del mio codice, l'ho postato sopra. Se è scomodo, allora non importa, lo capirò in qualche modo.
Si copia dall'ultima posizione a quella da cancellare, si ridimensiona l'array.
No, l'ordine non è importante, basta cancellare una voce nota (trovata per conoscenza, l'indice è noto). Può essere ovunque nell'array (all'inizio, in mezzo, alla fine).ArrayRemove è ottimo, tutto andrebbe bene, ma come applicare questa funzione a un array bidimensionale? il manuale non ne parla.
No, l'ordine non è importante, abbiamo solo bisogno di cancellare un record noto (trovato dalla cognizione, l'indice è noto). Può essere ovunque nell'array (all'inizio, nel mezzo, alla fine).ArrayRemove è ottimo, tutto andrebbe bene, ma come applicare questa funzione a un array bidimensionale? Non c'è niente nel manuale su questo.
Quindi fate come ho detto, solo l'array nella seconda dimensione viene copiato.
Quando si ridimensiona un array, specificare anche un terzo parametro, ad esempio 32.
In questo casoArrayRemove è più adatto, c'è un esempio nel manuale, funziona esattamente così
L'unico problema è che questi esempi e funzioni sono progettati per array unidimensionali, e non vogliono lavorare con array bidimensionali.
Credo che mi manchi qualcosa di molto importante e fondamentale. Ma cos'è?
Vi dico che ho perso il libro di riferimento.
Questa è una sciocchezza. Ho usato questa funzione senza leggere il manuale. Nel debugger ho visto come l'elemento è stato cancellato e la dimensione dell'array è stata immediatamente ridotta. Ho controllato, funziona anche con un array di strutture senza problemi. Ora non posso lavorare con il codice, ma solo con le parole: per esempio, voglio cancellare il 3° indice da un array bidimensionale. Si scopre che il quinto e il sesto valore devono essere rimossi. Al momento della copia, la funzione organizza tutti i valori in un array unidimensionale e si scopre che la terza coppia inizia con l'indice 5. In generale questo si realizza dopo alcuni esperimenti.
Per quanto riguarda ArrayRemove, quando posso, lo testerò su array di 2-4 dimensioni. Per mancanza di necessità non l'ho mai testato e non ho sospettato che non funzionasse.
Aggiunto:
Controllato. Non dimenticate che non potete ridimensionare un array statico. Ecco perché nell'esempio della documentazione la dimensione dell'array rimane la stessa e le ultime due stringhe sono ripetute. Quando si cancellano righe da un array dinamico, la dimensione cambia senza problemi.
Il manuale deve essere sfregato fino ai fori: )))) nel monitor.
Questa è una sciocchezza. Ho usato questa funzione senza leggere il manuale. Nel debugger ho visto come l'elemento viene cancellato e la dimensione dell'array si riduce istantaneamente. Controllato, anche su un array di strutture funziona senza problemi. Ora non posso lavorare con il codice, ma solo con le parole: per esempio, voglio cancellare il 3° indice da un array bidimensionale. Si scopre che il quinto e il sesto valore devono essere rimossi. Al momento della copia, la funzione organizza tutti i valori in un array unidimensionale e si scopre che la terza coppia inizia con l'indice 5. In generale questo si realizza dopo alcuni esperimenti.
Per quanto riguarda ArrayRemove, quando posso, lo testerò su array di 2-4 dimensioni. Per mancanza di necessità non l'ho mai testato e non ho sospettato che non funzionasse.
Aggiunto:
Controllato. Non dimenticate che non potete ridimensionare un array statico. Ecco perché nell'esempio della documentazione la dimensione dell'array rimane la stessa e le ultime due stringhe sono ripetute. Quando si cancellano righe da un array dinamico, la dimensione cambia senza problemi.
La directory deve essere cancellata in holes:)))) nel monitor.
Qui ho fatto un array tridimensionale e il risultato:
Il tuo esempio è molto lento, con un gran numero di valori questo sarà evidente.
Copiare l'array "in se stesso", iniziando dalla posizione accanto a quella da cancellare e scrivendo da quella da cancellare. E poi ridimensionare come suggerito da Grigori.S.B
È interessante, se ho capito bene, è necessario usare questa funzione?
Buongiorno, grazie per la sua risposta.
Immagino che non l'abbiate notato, potete guardare sopra, tutte le domande riguardavano MQL5.
Capisco che la differenza non è cruciale a volte, ma tuttavia. La funzione che hai citato ridimensiona l'array, forse tagliando elementi extra se la dimensione è ridotta.
Questo non è ciò che è necessario. È necessario rimuovere un elemento trovandolo per valore. Ho provato anch'io questa funzione, ne ho scritto nel #23. Grazie comunque.
Anche io non ci ho fatto caso. mql5 ha la funzione ArrayRemove e nessun problema.
In questo casoArrayRemove è più adatto, c'è un esempio nel manuale, funziona esattamente così
L'unico problema è che questi esempi e funzioni sono progettati per array unidimensionali, e non vogliono lavorare con array bidimensionali.
Credo che mi manchi qualcosa di molto importante e fondamentale. Ma cos'è?
Ti dico che ho già perso il libro di riferimento.
In questo casoArrayRemove è più adatto, c'è un esempio nel manuale, funziona esattamente così
L'unico problema è che questi esempi e funzioni sono progettati per array unidimensionali, e non vogliono lavorare con array bidimensionali.
Credo che mi manchi qualcosa di molto importante e fondamentale. Ma cos'è?
Ti dico che ho già perso il conto.
Per un array bidimensionale, è necessario moltiplicare il numero di riga per la cancellazione per 2. Per una matrice tridimensionale moltiplicare per 3...
Non capisco bene questo, potresti elaborarlo, o meglio ancora, mostrarmi la modifica su un pezzo del mio codice, l'ho postato sopra. Se è scomodo, allora non importa, lo capirò in qualche modo.
No, l'ordine non è importante, basta cancellare una voce nota (trovata per conoscenza, l'indice è noto). Può essere ovunque nell'array (all'inizio, in mezzo, alla fine).ArrayRemove è ottimo, tutto andrebbe bene, ma come applicare questa funzione a un array bidimensionale? il manuale non ne parla.
No, l'ordine non è importante, abbiamo solo bisogno di cancellare un record noto (trovato dalla cognizione, l'indice è noto). Può essere ovunque nell'array (all'inizio, nel mezzo, alla fine).ArrayRemove è ottimo, tutto andrebbe bene, ma come applicare questa funzione a un array bidimensionale? Non c'è niente nel manuale su questo.
In questo casoArrayRemove è più adatto, c'è un esempio nel manuale, funziona esattamente così
L'unico problema è che questi esempi e funzioni sono progettati per array unidimensionali, e non vogliono lavorare con array bidimensionali.
Credo che mi manchi qualcosa di molto importante e fondamentale. Ma cos'è?
Vi dico che ho perso il libro di riferimento.
Questa è una sciocchezza. Ho usato questa funzione senza leggere il manuale. Nel debugger ho visto come l'elemento è stato cancellato e la dimensione dell'array è stata immediatamente ridotta. Ho controllato, funziona anche con un array di strutture senza problemi. Ora non posso lavorare con il codice, ma solo con le parole: per esempio, voglio cancellare il 3° indice da un array bidimensionale. Si scopre che il quinto e il sesto valore devono essere rimossi. Al momento della copia, la funzione organizza tutti i valori in un array unidimensionale e si scopre che la terza coppia inizia con l'indice 5. In generale questo si realizza dopo alcuni esperimenti.
Per quanto riguarda ArrayRemove, quando posso, lo testerò su array di 2-4 dimensioni. Per mancanza di necessità non l'ho mai testato e non ho sospettato che non funzionasse.
Aggiunto:
Controllato. Non dimenticate che non potete ridimensionare un array statico. Ecco perché nell'esempio della documentazione la dimensione dell'array rimane la stessa e le ultime due stringhe sono ripetute. Quando si cancellano righe da un array dinamico, la dimensione cambia senza problemi.
Il manuale deve essere sfregato fino ai fori: )))) nel monitor.
Ecco l'array tridimensionale e il risultato:
Questa è una sciocchezza. Ho usato questa funzione senza leggere il manuale. Nel debugger ho visto come l'elemento viene cancellato e la dimensione dell'array si riduce istantaneamente. Controllato, anche su un array di strutture funziona senza problemi. Ora non posso lavorare con il codice, ma solo con le parole: per esempio, voglio cancellare il 3° indice da un array bidimensionale. Si scopre che il quinto e il sesto valore devono essere rimossi. Al momento della copia, la funzione organizza tutti i valori in un array unidimensionale e si scopre che la terza coppia inizia con l'indice 5. In generale questo si realizza dopo alcuni esperimenti.
Per quanto riguarda ArrayRemove, quando posso, lo testerò su array di 2-4 dimensioni. Per mancanza di necessità non l'ho mai testato e non ho sospettato che non funzionasse.
Aggiunto:
Controllato. Non dimenticate che non potete ridimensionare un array statico. Ecco perché nell'esempio della documentazione la dimensione dell'array rimane la stessa e le ultime due stringhe sono ripetute. Quando si cancellano righe da un array dinamico, la dimensione cambia senza problemi.
La directory deve essere cancellata in holes:)))) nel monitor.
Qui ho fatto un array tridimensionale e il risultato:
Il tuo esempio è molto lento, con un gran numero di valori questo sarà evidente.
Con un sacco di cosa? Elementi dell'array che non sono nemmeno riempiti ad ogni tick? Come si noterà?