C++ - interval tree implementation

前端 未结 5 721
情话喂你
情话喂你 2020-12-01 05:35

Does someone know any good interval tree implementation in C++?

Obviously, something template-driven, better in boost-like style.<

相关标签:
5条回答
  • 2020-12-01 05:46

    I had exactly the same need. I couldn't find any suitable (simple, modern, portable) implementations, so I used a python implementation by Brent Pedersen as a guide and wrote a barebones C++ version. The IntervalTree behaves like a standard STL container, with some caveats due to its simplicity (no iterators, for instance). You use it like this ("T" is an arbitrary type):

    vector<Interval<T> > intervals;
    // ... make intervals!
    IntervalTree<T> tree(intervals);
    

    And you query it like this:

    vector<Interval<T> > results;
    tree.findContained(start, stop, results);
    // results now contains Intervals which are fully contained in the query interval
    results.clear();
    tree.findOverlapping(start, stop, results);
    // results now contains Intervals which overlap the query interval
    
    0 讨论(0)
  • 2020-12-01 05:52

    I uploaded simple implementation of Interval Tree to github: https://github.com/coolsoftware/ITree

    Look class itree in itree.h.

    0 讨论(0)
  • 2020-12-01 05:52

    if you don't mind translating a c# implementation to c++, goto http://code.google.com/p/intervaltree/ .based on an avl self balancing tree.

    0 讨论(0)
  • 2020-12-01 05:58

    There appears to be one in the NCBI C++ Toolkit.

    Jury's still out on whether it's "good," though (and even whether it's template-driven; I'm still somewhat new to C++, so I'm not entirely sure that it is, but I suspect as much).

    0 讨论(0)
  • 2020-12-01 06:00

    Boost-like ? Boost ICL!

    The Boost Interval Container Library

    0 讨论(0)
提交回复
热议问题