- 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
Verändert die Größe der ersten Dimension des Arrays
int ArrayResize(
|
Parameter
array[]
[out] das Array, dessen Größe verändert werden soll
new_size
[in] Die neue Größe der ersten Dimension
reserve_size=0
[in] Die Größe für Zusatzreserve
Rückgabewert
Bei erfolgreicher Durchführung gibt die Funktion die Anzahl aller Elemente zurück, die das Array nach der Größenveränderung enthält; anderenfalls gibt -1 zurück und das Array verändert seine Größen nicht.
Wenn ArrayResize() auf ein static Array, eine Zeitreihe oder ein Indikatorpuffer angewendet wird, bleibt die Arraygröße gleich – diese Arrays werden nicht verändert. In diesem Fall, wenn new_size<=ArraySize(array), wird die Funktion new_size zurückgeben, andernfalls den Wert -1.
Hinweis
Die Funktion kann nur auf dynamischen Arrays angewendet werden. Es sollte beachtet werden, dass die Größe dynamischer Arrays, die als Indikatorpuffer mit der Funktion SetIndexBuffer() definiert wurden, nicht verändert werden können. Für Indikatorpuffer werden alle Änderungen der Größe von Laufzeit-Subsystem des Terminals durchgeführt.
Die Gesamtzahl der Elemente im Array darf nicht größer als 2147483647 sein.
Bei häufigen Speicherveränderungen wird empfohlen, den dritten Parameter zu verwenden, der eine Reserve festlegt, um die Anzahl der physikalischen Speicherzuweisungen zu reduzieren. Alle nachfolgenden Aufrufe der Funktion ArrayResize führen dann nicht mehr zu einer neuen physikalischer Speicherzuweisung, in diesen Fällen ändert sich nur die Größe der ersten Dimension des Arrays im reservierten Speicherbereich. Es sei daran erinnert, dass der dritte Parameter nur dann verwendet wird, wenn die physikalische Speicherzuweisung stattfindet, zum Beispiel:
ArrayResize(arr,1000,1000); |
In diesem Fall gibt es nur zwei Speicherzuweisungen, einmal vor der Schleife mit 3000 Iterationen (dabei wird die Dimension des Arrays auf 1000 festgelegt) und das zweite Mal wenn i gleich 2000 ist. Wenn der dritte Parameter weggelassen worden wäre, würden es 2000 einzelne physikalische Speicherzuweisungen geben, welches die Ausführung des Programms verzögern würde.
Beispiel:
//+------------------------------------------------------------------+ |
Siehe auch