On 02/20/2012 06:30 AM, James Miller wrote:
On 20 February 2012 16:43, H. S. Teoh<[email protected]>  wrote:
On Mon, Feb 20, 2012 at 04:19:10PM +1300, James Miller wrote:
[...]
My feedback is that for most people's purposes, associative arrays and
arrays (dynamic and static) are fine. PHP doesn't have a well-used
collections library (though it does exist) but it is used by millions
of sites every day. I don't normally need an explicit
queue/stack/priority queue.
[...]

The convenience and flexibility of D's arrays have, for the most part,
replaced my need for explicit stacks or queues. For example, here's a
stack:

        T[] stack;
        void push(elem) {
                stack ~= elem;
        }
        T pop() {
                T elem = stack[$-1];
                stack = stack[0..$-1];
                return elem;
        }

Here's a queue:

        T[] queue;
        void enqueue(elem) {
                queue ~= elem;
        }
        T dequeue() {
                T elem = queue[0];
                queue = queue[1..$];
                return elem;
        }

It's so trivial to implement that it's hardly worth the effort to
implement a class for it.

Your mileage may vary, though.


T

The cool thing about that implementation is that, by using slices, you
generally avoid allocation, unless its neccessary.

As far the queue is concerned. The stack implementation misses an assumeSafeAppend and will reallocate unnecessarily.

Reply via email to