View source code
Display the source code in std/array.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Function std.array.assocArray

Returns a newly allocated associative array from a range of key/value tuples or from a range of keys and a range of values.

auto auto assocArray(Range) (
  Range r
)
if (isInputRange!Range);

auto auto assocArray(Keys, Values) (
  Keys keys,
  Values values
)
if (isInputRange!Values && isInputRange!Keys);

Parameters

NameDescription
r An input range of tuples of keys and values.
keys An input range of keys
values An input range of values

Returns

A newly allocated associative array out of elements of the input range, which must be a range of tuples (Key, Value) or a range of keys and a range of values. If given two ranges of unequal lengths after the elements of the shorter are exhausted the remaining elements of the longer will not be considered. Returns a null associative array reference when given an empty range.

Duplicates

Associative arrays have unique keys. If r contains duplicate keys, then the result will contain the value of the last pair for that key in r.

See Also

Tuple, std.range.zip

Example

import std.range : repeat, zip;
import std.typecons : tuple;
auto a = assocArray(zip([0, 1, 2], ["a", "b", "c"])); // aka zipMap
static assert(is(typeof(a) == string[int]));
writeln(a); // [0:"a", 1:"b", 2:"c"]

auto b = assocArray([ tuple("foo", "bar"), tuple("baz", "quux") ]);
static assert(is(typeof(b) == string[string]));
writeln(b); // ["foo":"bar", "baz":"quux"]

auto c = assocArray("ABCD", true.repeat);
static assert(is(typeof(c) == bool[dchar]));
bool[dchar] expected = ['D':true, 'A':true, 'B':true, 'C':true];
writeln(c); // expected

Authors

Andrei Alexandrescu and Jonathan M Davis

License

Boost License 1.0.