Does D have a Queue and Stack container?

bearophile bearophileHUGS at lycos.com
Mon Jan 14 02:46:15 PST 2013


> Sorry, I meant to say, a dynamic array of pointers to 
> fixed-sized arrays.

That's for a stack. For a queue a nice implementation is a 
power-of-2 growable circular queue of pointers to fixed-sized 
arrays (chunks); plus a ("intrusive", no more memory needed) 
linked list of some of the last free blocks (that need to be 
cleared if they contain indirections).

For a deque the implementation is similar, just a bit more 
complex.

(In theory there is a small queue optimization, a union on the 
dynamic array that implements the circular queue, to remove one 
indirection level when the queue needs only one chunk of memory, 
but then you have to add one test to tell apart the two 
configurations every time you add or remove an item, so probably 
it's not worth it).

Bye,
bearophile


More information about the Digitalmars-d mailing list