- ArrayBsearch
- ArrayCopy
- ArrayCompare
- ArrayFree
- ArrayGetAsSeries
- ArrayInitialize
- ArrayFill
- ArrayIsDynamic
- ArrayIsSeries
- ArrayMaximum
- ArrayMinimum
- ArrayPrint
- ArrayRange
- ArrayResize
- ArrayInsert
- ArrayRemove
- ArrayReverse
- ArraySetAsSeries
- ArraySize
- ArraySort
- ArraySwap
ArrayResize
この関数は最初の次元のサイズを新しく設定します。
int ArrayResize(
|
パラメータ
array[]
[out] サイズを変更する配列
new_size
[in] 最初の次元の新しいサイズ
reserve_size=0
[in] 予備を取得するための分散サイズ
戻り値
正常に実行された場合はサイズ変更後の配列に含まれる全ての要素の数を返します。それ以外の場合は、-1を返し、配列のサイズは変更されません。
ArrayResize()が静的配列、時系列または指標バッファに適応された場合、配列サイズは同じままです。これらの配列は再割り当てされません。この場合new_size<=ArraySize(array)であれば、この関数はnew_sizeのみを返します。その他の場合は -1が返されます。
注意事項
この関数は 動的配列のみに使用出来ます。SetIndexBuffer() 関数によって指標バッファとして割り当てられた動的配列のサイズは変更出来ないので注意が必要です。指標バッファについては、サイズ変更の全ての操作は端末のランタイムサブシステムによって実行されます。
配列の要素数の合計は 2,147,483,647を超えることは出来ません。
頻繁なメモリ割り当てをする場合には、物理メモリの割り当て量を減らすために予備を設定する 3 番目のパラメータを使用することをお勧めします。ArrayResize の後続の呼び出しはメモリの物理的な再配分にはつながらず、確保したメモリ内の最初の配列の次元のサイズを変更するだけです。3 番目のパラメータは物理メモリの割り当て時にのみ使用されることを忘れてはいけません。例:
ArrayResize(arr,1000,1000);
|
この場合、メモリは2 回再割り当てされます。1 回目は3000要素のループに入る前(配列のサイズを1000に設定されます)で2 回目は i が 2000の時です。3 番目のパラメータを省略した場合は、メモリの物理的な再配分が2000回起こりプログラムの実行がを遅くなります。
例:
//+------------------------------------------------------------------+
|
参照