- 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 fonction définit une nouvelle taille pour la première dimension
int ArrayResize(
|
Paramètres
array[]
[out] Tableau à redimmensionner.
new_size
[in] Nouvelle taille pour la première dimension.
reserve_size=0
[in] Taille distribuée à réserver.
Valeur de Retour
En cas d'exécution réussie, retourne le nombre d'éléments contenus dans le tableau après la redimmensionnement, sinon retourne -1 et le tableau n'est pas redimensionné.
Si ArrayResize() est appliqué à un tableau statique, une timeseries ou le buffer d'un indicateur, la taille du tableau reste la même ce tableaux ne peuvent pas être réalloués. Dans ce cas, si new_size<=ArraySize(array), la fonction ne retourne que new_size ; sinon elle retourne -1.
Note
La fonction ne peut être appliquée qu'à des tableaux dynamiques. Il est à noter que vous ne pouvez pas changer la taille des tableaux dynamiques assignés aux buffers d'un indicateur par la fonction SetIndexBuffer(). Pour les buffers d'indicateur, toutes les opérations de redimmensionnement sont effectuées par le système d'exécution du terminal.
Le nombre total d'éléments du tableau ne peut pas excéder 2 147 483 647.
En cas d'allocation mémoire fréquente, il est recommandé d'utiliser un troisième paramètre pour définir une réserve afin de réduire le nombre d'allocations mémoire physiques. Tous les appels ultérieurs à ArrayResize ne mènent pas à une réallocation physique de la mémoire, mais change uniquement la taille de la première dimension du tableau dans la mémoire réservée. Le troisième paramètre ne sera utilisé qu'en cas d'allocation physique de la mémoire. Par exemple :
ArrayResize(arr,1000,1000);
|
Dans ce cas, la mémoire sera réallouée deux foix, d'abord avant d'entrer dans la boucle de 3000 éléments (la taille du tableau sera définie à 1000), et la seconde fois lorsque i sera égal à 2000. Si nous oublions le troisième paramètre, il y a aura 2000 réallocations physiques de la mémoire, ce qui ralentira le programme.
Exemple :
//+------------------------------------------------------------------+
|
Voir aussi