Import std.collections.interval_tree
std.collections.interval_tree
A tree of values over intervals, which finds those that overlap an interval or hold a key.
IntervalTree<K, V>: values, each over an interval of keys from a low to a high, both in it,
which finds the intervals that overlap another, or hold a key, without going over the others.
It's a balanced tree of the intervals, by low and then by high, each node with the values over
its interval and the highest high under it, so a search skips what ends early.
std/collections/interval_tree.fb
Types
IntervalTree
class
@DebugElements Public Class IntervalTree<K: Comparable, V> Implements Iterable<(K, K, V)>, Cloneable, Defaultable
Values over ranges of keys, found by the ranges that hold a key or overlap another range.
Examples
Local meetings = IntervalTree<Int, String>()
meetings.Add(9, 11, "standup")
meetings.Add(10, 12, "review")
meetings.Add(14, 15, "lunch")
Expect(meetings.Containing(10).Count == 2)
Expect(meetings.Overlapping(12, 13) == [(10, 12, "review")])std/collections/interval_tree.fb, line 42
-
How many values it has, over all its intervals.
-
Adds a value over the interval from
lowtohigh, after any others over it. A high belowlowpanics, and so does an end that isn't equal to itself, like NaN. -
Removes the first
valueover the interval fromlowtohighthat's equal tovalue, and tells whether there was one. An end that isn't equal to itself has none. -
Whether a value equal to
valueis over the interval fromlowtohigh, which an end that isn't equal to itself never has. -
Takes every interval out.
-
The intervals that overlap the one from
lowtohigh, with their values, bylowand then byhigh, in a new array. A high belowlowoverlaps nothing, and so does an end that isn't equal to itself. -
The intervals that hold
key, with their values, by low and then by high, in a new array. -
Each interval's low and high with each of its values, by low and then by high, in a new array.
-
A new, empty IntervalTree.
-
A new IntervalTree with the same intervals and values.
-
Each interval's low and high with each of its values, as a tuple, by low and then by high. Adding or removing a value while going over them panics.
IntervalTreeIterator
struct
Public Struct IntervalTreeIterator<K: Comparable, V> Implements Iterator<(K, K, V)>
The intervals of an IntervalTree and their values, by low and then by high, which a For loop goes over.
std/collections/interval_tree.fb, line 305
-
The next interval's low and high, with one of its values, by low and then by high, or Null after the last. Panics when the IntervalTree changed since the loop began.
Extends
IntervalTree
extend
Extend IntervalTree<K, V> Implements Equatable
Compares IntervalTrees with == and !=, where their values can be compared.
std/collections/interval_tree.fb, line 349
-
Whether the two have the same intervals, with equal values in the same order.
IntervalTree
extend
Extend IntervalTree<K, V> Implements Printable
Shows an IntervalTree in a string, as its ToString writes it.
std/collections/interval_tree.fb, line 361
-
Its intervals and their values, in order, as an array of tuples: "[(1, 3, a), (2, 5, b)]".
Report an issue with this page or with FutureBlitz on GitHub.