- this(float f = Container.defaultLoadFactor) ¶#
-
Construct a HashSet instance
- ~this() ¶#
-
Clean up when deleted
- Alloc allocator() [final] ¶#
-
Return the configured allocator
- Iterator iterator() [final] ¶#
-
Return a generic iterator for contained elements
- int opApply(int delegate(ref V value) dg) [final] ¶#
-
- size_t size() [final] ¶#
-
Return the number of elements contained
- bool add(V element) [final] ¶#
-
Add a new element to the set. Does not add if there is an
equivalent already present. Returns true where an element
is added, false where it already exists
Time complexity: O(1) average; O(n) worst.
- bool contains(V element) [final] ¶#
-
Does this set contain the given element?
Time complexity: O(1) average; O(n) worst
- HashSet dup() [final] ¶#
-
Make an independent copy of the container. Does not clone
elements
Time complexity: O(n)
- size_t remove(V element, bool all) [final] ¶#
-
Remove the provided element. Returns true if found, false
otherwise
Time complexity: O(1) average; O(n) worst
- bool remove(V element) [final] ¶#
-
Remove the provided element. Returns true if found, false
otherwise
Time complexity: O(1) average; O(n) worst
- size_t replace(V oldElement, V newElement, bool all) [final] ¶#
-
Replace the first instance of oldElement with newElement.
Returns true if oldElement was found and replaced, false
otherwise.
- bool replace(V oldElement, V newElement) [final] ¶#
-
Replace the first instance of oldElement with newElement.
Returns true if oldElement was found and replaced, false
otherwise.
- bool take(ref V element) [final] ¶#
-
Remove and expose the first element. Returns false when no
more elements are contained
Time complexity: O(n)
- void add(IContainer!(V) e) [public] ¶#
-
- size_t remove(IContainer!(V) e) [public] ¶#
-
- HashSet clear() [final] ¶#
-
Clears the HashMap contents. Various attributes are
retained, such as the internal table itself. Invoke
reset() to drop everything.
Time complexity: O(n)
- HashSet reset() [final] ¶#
-
Reset the HashSet contents and optionally configure a new
heap manager. This releases more memory than clear() does
Time complexity: O(1)
- size_t buckets() [final] ¶#
-
Return the number of buckets
Time complexity: O(1)
- void buckets(size_t cap) [final] ¶#
-
Set the number of buckets and resize as required
Time complexity: O(n)
- float threshold() [final] ¶#
-
Return the resize threshold
Time complexity: O(1)
- void threshold(float desired) [final] ¶#
-
Set the resize threshold, and resize as required
Time complexity: O(n)
- V[] toArray(V[] dst = null) [final] ¶#
-
Copy and return the contained set of values in an array,
using the optional dst as a recipient (which is resized
as necessary).
Returns a slice of dst representing the container values.
Time complexity: O(n)
- bool isEmpty() [final] ¶#
-
Is this container empty?
Time complexity: O(1)
- HashSet check() [final] ¶#
-
Sanity check
- Ref allocate() [private] ¶#
-
Allocate a node instance. This is used as the default allocator
- void checkLoad() [private] ¶#
-
Check to see if we are past load factor threshold. If so,
resize so that we are at half of the desired threshold.
- void resize(size_t newCap) [private] ¶#
-
resize table to new capacity, rehashing all elements
- bool remove(Ref node, size_t row) [private] ¶#
-
Remove the indicated node. We need to traverse buckets
for this, since we're singly-linked only. Better to save
the per-node memory than to gain a little on each remove
Used by iterators only
- HashSet clear(bool all) [private] ¶#
-
Clears the HashSet contents. Various attributes are
retained, such as the internal table itself. Invoke
reset() to drop everything.
Time complexity: O(n)
- void increment() [private] ¶#
-
new element was added
- void decrement(Ref p) [private] ¶#
-
element was removed
- void mutate() [private] ¶#
-
set was changed
- struct Iterator [private] ¶#
-
Iterator with no filtering
- bool valid() ¶#
-
Did the container change underneath us?
- bool next(ref V v) ¶#
-
Accesses the next value, and returns false when
there are no further values to traverse
- V* next() ¶#
-
Return a pointer to the next value, or null when
there are no further values to traverse
- int opApply(int delegate(ref V value) dg) ¶#
-
Foreach support
- bool remove() ¶#
-
Remove value at the current iterator location