Use the given allocator for allocations.
Constructs a HashSet with an initial bucket count of bucketCount. bucketCount must be a power of two.
Constructs a HashSet with an initial bucket count of bucketCount. bucketCount must be a power of two.
Forward range interface
Inserts the given item into the set.
Removes all items from the set
Inserts the given item into the set.
Supports a in b syntax
Forward range interface
Removes the given item from the set.
the element type
the allocator to use. Defaults to Mallocator.
the hash function to use on the elements
true if the container should support holding references to GC-allocated memory.
1 import std.array : array; 2 import std.algorithm : canFind; 3 import std.uuid : randomUUID; 4 5 auto s = HashSet!string(16); 6 assert(!s.contains("nonsense")); 7 assert(s.put("test")); 8 assert(s.contains("test")); 9 assert(!s.put("test")); 10 assert(s.contains("test")); 11 assert(s.length == 1); 12 assert(!s.contains("nothere")); 13 s.put("a"); 14 s.put("b"); 15 s.put("c"); 16 s.put("d"); 17 string[] strings = s.range.array; 18 assert(strings.canFind("a")); 19 assert(strings.canFind("b")); 20 assert(strings.canFind("c")); 21 assert(strings.canFind("d")); 22 assert(strings.canFind("test")); 23 assert(*("a" in s) == "a"); 24 assert(*("b" in s) == "b"); 25 assert(*("c" in s) == "c"); 26 assert(*("d" in s) == "d"); 27 assert(*("test" in s) == "test"); 28 assert(strings.length == 5); 29 assert(s.remove("test")); 30 assert(s.length == 4); 31 s.clear(); 32 assert(s.length == 0); 33 assert(s.empty); 34 s.put("abcde"); 35 assert(s.length == 1); 36 foreach (i; 0 .. 10_000) 37 { 38 s.put(randomUUID().toString); 39 } 40 assert(s.length == 10_001); 41 42 // Make sure that there's no range violation slicing an empty set 43 HashSet!int e; 44 foreach (i; e[]) 45 assert(i > 0); 46 47 enum MAGICAL_NUMBER = 600_000; 48 49 HashSet!int f; 50 foreach (i; 0 .. MAGICAL_NUMBER) 51 assert(f.insert(i)); 52 import std.range:walkLength; 53 assert(f.length == f[].walkLength); 54 foreach (i; 0 .. MAGICAL_NUMBER) 55 assert(i in f); 56 foreach (i; 0 .. MAGICAL_NUMBER) 57 assert(f.remove(i)); 58 foreach (i; 0 .. MAGICAL_NUMBER) 59 assert(!f.remove(i)); 60 61 HashSet!int g; 62 foreach (i; 0 .. MAGICAL_NUMBER) 63 assert(g.insert(i)); 64 65 static struct AStruct 66 { 67 int a; 68 int b; 69 } 70 71 HashSet!(AStruct*, Mallocator, a => a.a) fred; 72 fred.insert(new AStruct(10, 10)); 73 auto h = new AStruct(10, 10); 74 assert(h in fred);
Hash Set.