- 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
함수는 첫 번째 차원에 대해 새 크기를 설정합니다
int ArrayResize(
|
매개변수
array[]
[out] 크기를 변경할 수 있는 배열.
new_size
[in] 첫 번째 차원의 새 크기.
reserve_size=0
[in] 예비로 가져올 분산 크기.
반환 값
성공적으로 실행되면 크기 조정 후 배열에 포함된 모든 요소의 수가 반환되고, 그렇지 않으면 -1이 반환되며 배열의 크기가 조정되지 않습니다.
ArrayResize()를 정적 배열, 시계열 또는 지표 버퍼에 적용하면 배열 크가가 동일하게 유지되고 이러한 배열은 재할당되지 않습니다. 이 경우, new_size<=ArraySize(array)이면, 함수는 new_size만 반환하며, 그렇지 않으면 -1 값을 반환됩니다.
참고
이 기능은 동적 배열에만 적용할 수 있습니다. SetIndexBuffer() 기능을 통해 지표 버퍼로 할당된 동적 배열의 크기는 변경할 수 없습니다. 지표 버퍼의 경우 크기 조정 작업은 모두 터미널의 런타임 하위 시스템에 의해 수행됩니다.
배열의 총 요소의 양은 2147483647을 초과할 수 없습니다.
메모리를 자주 할당할 경우 물리적 메모리 할당 수를 줄이려면 예약을 설정하는 세 번 째 변수를 사용하는 것이 좋습니다. 이후의 모든 ArrayResize 호출은 메모리를 물리적으로 재할당하지 않고 예약된 메모리 내에서 첫 번째 배열 차원의 크기만 변경합니다. 세 번째 매개변수는 물리적 메모리를 할당하는 동안에만 사용됩니다. 예를 들어:
ArrayResize(arr,1000,1000);
|
이 경우, 메모리가 두 번 재할당되며, 첫 번째는 3000회 반복 루프(배열의 크기가 1000으로 설정됨)에 들어가기 전에 i를 사용하는 두 번째는 2000과 같습니다. 세 번째 매개변수를 건너뛰면 2000 개의 물리적 메모리 재할당이 발행하여 프로그램 속도가 느려집니다.
예:
//+------------------------------------------------------------------+
|
추가 참조