Removing from SList (std.container)...

Roman D. Boiko rb at d-coding.com
Wed Jun 27 13:29:01 PDT 2012


On Wednesday, 27 June 2012 at 20:14:53 UTC, Steven Schveighoffer 
wrote:
> Removal of that element is perfectly possible, you just need to 
> maintain a reference to its predecessor.  Which SList's range 
> does not keep track of.  It all depends on tradeoffs of what 
> you want for performance, vs. features.  It's why I contend 
> that generic singly linked list is difficult to create.  Can't 
> please everyone.

Yes, I agree.

> And iterators are not necessary, ranges are quite possible.

In this respect it is not only a performance vs. features 
tradeoff, semantics is (usually) different. Of course, we might 
use a range for what is semantically an iterator. But it feels 
unnatural for me.

E.g., to point to an element in the middle of some range we would 
need to create another range and pass it to a function along with 
the original range. I would hesitate to call them ranges unless 
that is explicitly a goal for some particular application. If 
that was the case, it would require an explicit explanation. (IMO)


More information about the Digitalmars-d-learn mailing list