- 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
Dizinin ilk boyutunun eleman sayısını değiştirir
int ArrayResize(
|
Parametreler
array[]
[out] Büyüklüğü değiştirilecek dizi.
new_size
[in] İlk boyut için belirlenen yeni büyüklük.
reserve_size=0
[in] Olası ilaveler için ayrılan büyüklük.
Dönüş değeri
Başarılı çalıştırma durumunda büyüklüğü ayarlanmış dizinin eleman sayısına dönüş yapar. Aksi durumda -1 değerine dönüş yapar ve dizi büyüklüğü değiştirilmez.
ArrayResize() fonksiyonu bir statik diziye, bir zaman serisine veya bir gösterge tamponuna uygulandığında büyüklük değerleri değişmez (bu tip diziler için yeni bellek tahsis edilmez). Bu durumda yeni_boyut<=ArraySize(dizi) işlemi yeni_boyut değerine; aksi durumda -1 değerine dönüş yapar.
Not
Bu fonksiyon sadece dinamik diziler üzerinde uygulanabilir. SetIndexBuffer() fonksiyonu aracılığıyla gösterge tamponu olarak atanmış dizilerin büyüklükleri değiştirilemez. Gösterge tamponları için tüm yeniden boyutlandırma işlemleri, terminalin çalışma zamanı alt sistemi tarafından gerçekleştirilir.
Dizideki elemanların sayısı 2147483647'yi geçemez.
Bellek tahsisi sık yapılıyorsa, fiziksel bellek tahsisinin sayısını azaltmak için, rezervi ayarlayan üçüncü parametrenin kullanımı tavsiye edilir. ArrayResize'ın daha sonraki çağrılarının tamamı, belleğin fiziksel olarak yeniden tahsisine yol açmaz. Sadece ilk boyutun büyüklüğünü ayrılmış bellek içerisinde değiştirir. Üçüncü parametrenin sadece fiziksel bellek tahsisi sırasında kullanılacağı hatırlanmalıdır. Örnek olarak:
ArrayResize(arr,1000,1000);
|
Bu durumda belleğin yeniden tahsisi iki kere gerçekleşir. İlki, 3000 elemanlı döngüye girilmeden (dizi büyüklüğü 1000 olarak ayarlanacak); ikincisi ise i, 2000'e eşit olduğunda gerçekleşecektir. Üçüncü parametreyi atladığımız takdirde, belleğin 2000 defa yeniden tahsisi söz konusu olacaktır, bu da programı yavaşlatacaktır.
Örnek:
//+------------------------------------------------------------------+
|
Ayrıca Bakınız