HashMap

Associative array / hash map.

Constructors

this
this()

Undocumented in source.

this
this(Allocator allocator)

Use the given allocator for allocations.

this
this(size_t bucketCount, Allocator allocator)

Constructs an HashMap with an initial bucket count of bucketCount. bucketCount must be a power of two.

this
this(size_t bucketCount)

Constructs an HashMap with an initial bucket count of bucketCount. bucketCount must be a power of two.

Destructor

~this
~this()

Undocumented in source.

Postblit

this(this)
this(this)

Undocumented in source.

Members

Functions

empty
bool empty()
get
auto get(K key, V defaultValue)

Gets the value for the given key, or returns defaultValue if the given key is not present.

keys
K[] keys()
length
size_t length()
opApply
int opApply(int delegate(ref K, ref V) del)

Support for foreach(key, value; aa) { ... } syntax;

opBinaryRight
bool opBinaryRight(K key)

Supports key in aa syntax.

opIndex
auto opIndex(K key)

Supports aakey syntax.

opIndexAssign
void opIndexAssign(V value, K key)

Supports aakey = value; syntax.

remove
bool remove(K key)

Removes the value associated with the given key

values
auto values()

Examples

1 import std.uuid : randomUUID;
2 auto hm = HashMap!(string, int)(16);
3 assert (hm.length == 0);
4 assert (!hm.remove("abc"));
5 hm["answer"] = 42;
6 assert (hm.length == 1);
7 assert ("answer" in hm);
8 hm.remove("answer");
9 assert (hm.length == 0);
10 hm["one"] = 1;
11 hm["one"] = 1;
12 assert (hm.length == 1);
13 assert (hm["one"] == 1);
14 foreach (i; 0 .. 1000)
15 {
16 	hm[randomUUID().toString] = i;
17 }
18 assert (hm.length == 1001);
19 assert (hm.keys().length == hm.length);
20 assert (hm.values().length == hm.length);
21 foreach (ref string k, ref int v; hm) {}
22 
23 auto hm2 = HashMap!(char, char)(4);
24 hm2['a'] = 'a';
25 
26 HashMap!(int, int) hm3;
27 assert (hm3.get(100, 20) == 20);
28 hm3[100] = 1;
29 assert (hm3.get(100, 20) == 1);

Meta