![]() |
The class Interval_skip_list<Interval> is a dynamic data structure that allows to find all members of a set of intervals that overlap a point.
#include <CGAL/Interval_skip_list.h>
| typedef Interval::Value | Value; | the type of inf and sup of the interval. |
| Interval_skip_list<Interval>::const_iterator | |
|
An iterator over all intervals.
| |
| Interval_skip_list<Interval> isl; | |||
|
Default constructor.
| |||
| template < class InputIterator > | |||
| Interval_skip_list<Interval> isl ( InputIterator first, InputIterator last); | |||
Constructor that inserts the iterator range [first, last) in the interval skip list.
| |||
| template < class InputIterator > | ||||
| int | isl.insert ( InputIterator first, InputIterator last) | |||
Inserts the iterator range [first, last) in the interval skip list, and returns
the number of inserted intervals.
| ||||
| void | isl.insert ( Interval i) | inserts interval i in the interval skip list. | ||
| bool | isl.remove ( Interval i) | removes interval i from the interval skip list. Returns true iff removal was successful. | ||
| bool | isl.is_contained ( Value v) | Returns true iff there is an interval that contains v. | ||
| template < class OutputIterator > | ||||
| OutputIterator | isl.find_intervals ( Value v, OutputIterator out) | |||
Writes the intervals i with i.inf() ≤ v ≤ i.sup to the
output iterator out.
| ||||
| void | isl.clear () | Removes all intervals from the interval skip list. | ||
| const_iterator | isl.begin () const | Returns an iterator over all intervals. | ||
| const_iterator | isl.end () const | Returns the past the end iterator. | ||
| ostream& | ostream& os << isl |
Inserts the interval skip list isl into the stream os.
|
The insertion and deletion of a segment in the interval skip list takes expected time O(log 2 n), if the segment endpoints are chosen from a continuous distribution. A stabbing query takes expected time O(log n), and finding all intervals that contain a point takes expected time O(log n + k), where k is the number of intervals.
The implementation is based on the code developed by Eric N. Hansen, which can be found at http://www-pub.cise.ufl.edu/~hanson/IS-lists/. Attention, this code has memory leaks.