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()

Parameters

K

the key type

V

the value type

Allocator

the allocator type to use. Defaults to Mallocator

hashFunction

the hash function to use on the keys

supportGC

true if the container should support holding references to GC-allocated memory.

Examples

import std.uuid : randomUUID;
auto hm = HashMap!(string, int)(16);
assert (hm.length == 0);
assert (!hm.remove("abc"));
hm["answer"] = 42;
assert (hm.length == 1);
assert ("answer" in hm);
hm.remove("answer");
assert (hm.length == 0);
hm["one"] = 1;
hm["one"] = 1;
assert (hm.length == 1);
assert (hm["one"] == 1);
foreach (i; 0 .. 1000)
{
	hm[randomUUID().toString] = i;
}
assert (hm.length == 1001);
assert (hm.keys().length == hm.length);
assert (hm.values().length == hm.length);
foreach (ref string k, ref int v; hm) {}

auto hm2 = HashMap!(char, char)(4);
hm2['a'] = 'a';

HashMap!(int, int) hm3;
assert (hm3.get(100, 20) == 20);
hm3[100] = 1;
assert (hm3.get(100, 20) == 1);

Meta