container stuff

Jonathan M Davis jmdavisProg at gmail.com
Wed May 26 21:20:24 PDT 2010


Steven Schveighoffer wrote:

> Jonathan M Davis Wrote:
> 
>> Looks interesting overall. There is one function, however, which makes no
>> sense to me: removeElement()/stableRemoveElement().
>> 
>> So, it basically removes a random element from the container? It could be
>> quite consistent as to which element it removes from the container (it
>> being implementation-dependent), but effectively, it removes a random
>> element? What's the point of that? I can't remember the last time - if
>> ever - that I wanted to remove an element from a container and I didn't
>> care which. Or am I misunderstanding what it does?
> 
> I think you are misunderstanding.  Random element means you can't tell
> which one is removed, but it doesn't *have* to be truly random :)  It most
> likely will be the most convenient element to remove (maybe that would be
> a better description).  In other words, you can't expect it to always be
> the last element, or the first element, or the lowest element, or
> whatever.
> 
> So essentially, I think that's what you were asking for, and I think
> that's what Andrei meant.
> 
> -Steve

I don't think that I misunderstood, but I may not have stated it well. No, 
the element is not _truly_ random, but it is removing an unspecified element 
which could be any element in the container, and is therefore random in the 
sense that you aren't telling it which one to remove. I've never been in a 
situation where it made any sense to do that. So, the function struck me as 
really weird.

If you wanted truly random, you'd have to implement a function that actually 
did random number generation or whatnot to decide which element to pick, and 
presumably, it would be abnormal to use that here (though I think that doing 
so would still follow the API). So, no, removeElement() (now removeAny()) is 
not truly random, but it isn't deterministic from the perspective of the 
programmer having any clue which one will be removed, and it may or may not 
be deterministic from the container's perspective.

- Jonathan M Davis


More information about the Digitalmars-d mailing list