make set for [0, 1, ..., n-1]
return range that contain less than x
return minimum element that isn't less than x
return maximum element that isn't greater than x
return range that contain greater than x
bidirectional range
import std.algorithm : equal, map; import std.range : iota; auto fs = FastSet(10); fs.insert(1); fs.insert(5); fs.insert(6); fs.remove(5); fs.insert(4); // [1, 4, 6] assert(1 in fs); assert(2 !in fs); assert(5 !in fs); assert(6 in fs); assert(equal([1, 4, 6], fs[])); assert(equal( iota(8).map!(i => fs.next(i)), [1, 1, 4, 4, 4, 6, 6, 10] )); assert(equal( iota(8).map!(i => fs.prev(i)), [-1, 1, 1, 1, 4, 4, 6, 6] )); assert(equal([1], fs.lowerBound(4))); assert(equal([1, 4], fs.lowerBound(5))); assert(equal([1, 4, 6], fs.upperBound(0))); assert(equal([4, 6], fs.upperBound(1)));
almost same boolint, except key range is stricted