I submitted my container library to code.dlang.org
Martin Nowak via Digitalmars-d
digitalmars-d at puremagic.com
Sun Mar 29 15:32:12 PDT 2015
On 03/29/2015 05:19 PM, w0rp wrote:
> 4. I ended up writing my own library hashmap, which when I tested ages
> ago competed with the standard associative array in terms of
> performance. This allows me to mark many things @safe pure nothrow.
>
> Destroy!
Nice docs.
Always use open addressing when implementing a hash table.
https://github.com/D-Programming-Language/dmd/pull/4088
https://github.com/higgsjs/Higgs/pull/170
> Also, I was able to implement setDefault in a hopefully efficient
> manner. I have tried to push setDefault as an awesome thing a few times,
> but I've never been able to explain why it's good eloquently.
I guess that's the counterpart to `get(key, default)` that also inserts
the default value. That's a very much needed primitive for our AA,
because currently you end up doing at least 1 unnecessary lookup.
Often I even write this.
auto p = key in aa;
if (p is null)
{
aa[key] = default;
p = key in aa;
}
It's called getOrElseUpdate in Scala, but I'd prefer getOrSet.
http://www.scala-lang.org/api/2.10.1-RC1/scala/collection/mutable/HashMap.html#getOrElseUpdate(A,⇒B):B
More information about the Digitalmars-d
mailing list