std.collection lets rename it into std,ridiculous.
Timon Gehr
timon.gehr at gmx.ch
Mon Feb 20 05:32:44 PST 2012
On 02/20/2012 06:30 AM, James Miller wrote:
> On 20 February 2012 16:43, H. S. Teoh<hsteoh at quickfur.ath.cx> 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.
More information about the Digitalmars-d
mailing list