Fun project - faster associative array algorithm
w0rp via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 7 11:14:34 PDT 2015
I'll also take this chance to once again plug 'setDefault' as a
useful associative array primitive. It's in my library. I don't
care what name is used for it, just the semantics. Nowak
suggested 'getOrSet', which is a good name.
// A string -> int[] map
HashMap!(string, int[]) map;
// set an element as usual.
map["a"] = [1, 2, 3];
// Returns [1, 2, 3], by reference, and appends 4 to it.
map.setDefault("a") ~= 4
// Finds nothing in the map currently, returns (int[]).init by
reference,
// now created in the map, appends to that.
map.setDefault("b") ~= 1
assert(map["b"] == [1]);
// setDefault with a lazy parameter.
int[] arr = map.setDefault("matey", [1, 2]);
assert(arr == [1, 2] && arr == map["matey"]);
More information about the Digitalmars-d
mailing list