containers.immutablehashset

Immutable hash set.

Authors

Brian Schott

  • Declaration

    struct ImmutableHashSet(T, alias hashFunction);

    The immutable hash set is useful for constructing a read-only collection that supports quickly determining if an element is present.

    Discussion

    Because the set does not support inserting, it only takes up as much memory as is necessary to contain the elements provided at construction. Memory is managed my malloc/free.

    Examples

    1. auto ihs1 = immutable ImmutableHashSet!(int, a => a)([1, 3, 5, 19, 31, 40, 17]); assert (ihs1.contains(1)); assert (ihs1.contains(3)); assert (ihs1.contains(5)); assert (ihs1.contains(19)); assert (ihs1.contains(31)); assert (ihs1.contains(40)); assert (ihs1.contains(17)); assert (!ihs1.contains(100)); assert (ihs1[].length == 7); auto ihs2 = immutable ImmutableHashSet!(int, a => a)([]); assert (ihs2.length == 0); assert (ihs2.empty); assert (ihs2[].length == 0); assert (!ihs2.contains(42));

    • Declaration

      this();

    • Declaration

      immutable this(const T[] values);

      Constructs an immutable hash set from the given values. The values must not have any duplicates.

    • Declaration

      immutable @safe immutable(T)[] opSlice();

      Return Value

      A GC-allocated array containing the contents of this set.

    • Declaration

      immutable bool contains(T value);

      Return Value

      true if this set contains the given value.

    • Declaration

      immutable size_t length;

      The number of items in the set.

    • Declaration

      immutable bool empty;

      True if the set is empty.