June 01, 2018

Merhaba, Kod incelerken vectorun bu sekilde tanımlandığını gördüm."template<class T,class Allocator = std::allocator class vector" Daha önce allocatoru bilmiyordum. Hiç bir örnekte de default dışında kendi allocator sınıfını yazan birini görmedim. (Belki de yeterince kod incelemediğimdendir. :) ) Sorum şu şekilde burdaki allocator sınıfı her koleksiyonda neden belirtilmis ? Ve ne zaman kendi allocator sınıfmızı yazmaya ihtiyaç duyarız.

Teşekkürler

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 01, 2018

Her topluluk yeni elemanlar için yer ayırırken kendi yöntemini kullanabilir. Örneğin, en basitinden malloc'u çağırabilir. Silinen elemanların yerlerinin yeni elemanlar için kullanılıp kullanılmayacağı, vs. konular kendisine kalmıştır. Bu, yüksek performans gerektiren durumlarda yetersiz kalır. Örneğin, D'nin dizileri yeni belleği çöp toplayıcıdan ayırırlar ve bu, Weka gibi firmalar için kabul edilemez bir yüktür.

Allocator, kullanıcının kendi bellek yönetimini belirtmesi için tasarlanmış ama fos çıkmış bir çözümdür. Dediğin gibi, herhalde kimse kullanmaz. Andrei D'nin şimdilik "deneysel" kabul edilen allocator kavramını tasarlarken C++'ınkinin hatalarını da göstermişti:

https://www.youtube.com/watch?v=LIb3L4vKZ7U

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]