struct range { int begin; int end; }; x::sorted_range<range> ranges; ranges.add(range{1, 5}); ranges.add(range{3,10}); ranges.remove(range{4,7});
The x::sorted_range
template
implements a subclass of a std::vector that
stores a sorted list of ranges. The template parameter is a class
with begin and end members.
These values specify a range defined by the
begin value and up to but not including the
end value.
add()
and
remove()
update the sorted list of ranges, automatically removing overlapping
and duplicate ranges. Other methods implement several additional
operations on the sorted range.