- ArrayBsearch
- ArrayCopy
- ArrayCompare
- ArrayFree
- ArrayGetAsSeries
- ArrayInitialize
- ArrayFill
- ArrayIsDynamic
- ArrayIsSeries
- ArrayMaximum
- ArrayMinimum
- ArrayPrint
- ArrayRange
- ArrayResize
- ArrayInsert
- ArrayRemove
- ArrayReverse
- ArraySetAsSeries
- ArraySize
- ArraySort
- ArraySwap
- ArrayToFP16
- ArrayToFP8
- ArrayFromFP16
- ArrayFromFP8
ArrayResize
La funzione imposta una nuova grandezza per la prima dimensione
int ArrayResize(
|
Parametri
array[]
[out] Array per cui cambiare la grandezza.
new_size
[in] Nuova grandezza per la prima dimensione.
reserve_size=0
[in] Grandezza distribuita per avere la riserva.
Valore restituito
Se eseguita correttamente, restituisce il conteggio di tutti gli elementi contenuti nell' array dopo il ridimensionamento, in caso contrario, restituisce -1, e l'array non viene ridimensionato.
se ArrayResize() viene applicato ad un array, ad una timeseries o ad un buffer di indicatore , la dimensione dell'array rimane la stessa – questi array non verranno riallocati. In questo caso se new_size <=ArraySize (array ) , la funzione restituirà solo new_size ; altrimenti verrà restituito il valore di -1.
Nota
La funzione può essere applicata solo agli array dinamici. Va notato che non è possibile modificare la grandezza degli array dinamici assegnati come buffers di indicatore dalla funzione SetIndexBuffer(). Per i buffers indicatore, tutte le operazioni di ridimensionamento vengono eseguite dal sottosistema runtime del terminale.
Total amount of elements in the array cannot exceed 2147483647.
Con una frequente allocazione di memoria, si raccomanda di utilizzare un terzo parametro che imposta una riserva per ridurre il numero di allocazioni di memoria fisica. Tutte le chiamate successive di ArrayResize non portano ad una riallocazione della memoria fisica, ma solo modificano la grandezza della prima dimensione dell' array all'interno della memoria riservata. Va ricordato che il terzo parametro verrà utilizzato solo durante l'allocazione di memoria fisica. Ad esempio:
ArrayResize(arr,1000,1000);
|
In questo caso, la memoria viene riallocata due volte, inizialmente, prima di inserire il ciclo di 3000-elementi (la grandezza dell'array sarà impostata a 1000), e la seconda volta poi con i pari a 2000. Se saltiamo il terzo parametro, ci saranno 2000 riallocazioni fisiche della memoria, che rallenteranno il programma.
Esempio:
//+--------------------------------------------------------------------------------+
|
Vedi anche