2013-06-06 15 views
5

Jenerik olmayan Stack sınıfında "Stack, dairesel bir arabellek olarak uygulanır."Neden (jenerik olmayan) Stack sınıfı dairesel bir tampon olarak uygulandı? (ve bu tam olarak ne anlama geliyor?)

Yığın kullanım durumu için dairesel bir arabellek uygulamasını anlamıyorum. Ayrıca 'un yığınının dairesel tampon olarak nasıl uygulanabileceğini anlamıyorum.

Wikipedia bu diyor ki:

dairesel tamponu kullanışlı özelliği tek tüketildiğinde onun unsurları karıştırılmaz olması gerekmez olmasıdır. (Dairesel olmayan bir tampon kullanıldıysa, bir kişi tüketildiğinde tüm elemanların kaydırılması gerekli olacaktır.) Diğer bir deyişle, dairesel tampon bir FIFO tamponu olarak çok uygundur, standart, dairesel olmayan bir tampon uygundur. bir LIFO tamponu olarak.

Dairesel arabellekleme, sabit bir maksimum boyuta sahip bir sıra için iyi bir uygulama stratejisi yapar.

Yığın, nasıl, nasıl yuvarlak arabellek olarak uygulandı ve neden?

cevap

4

Bu belgede bir kopyalama/yapıştırma/düzenleme hatası olduğundan şüpheleniyorum; reflektörde bakıldığında, dairesel tampon olarak uygulanan ; örneğin itme için temelde (boyutlandırma kodundan sonra) 'dir:

this._array[this._size++] = obj; 

bakıştır:

return this._array[this._size - 1]; 

ve pop geçerli:

object value = this._array[--this._size]; 
this._array[this._size] = null; 
return value; 

Not onu ofset her türlü kullanmaz/wrap-around - aslında dairesel bir tampon kullanarak değil. İçgüdüleriniz doğru görünüyor, ancak belgeler yanlış görünüyor.

+0

Teşekkürler Marc. Reflektöre bakmalıydım. :-) – richard