查找C ++区间树算法实现

时间:2008-10-17 16:12:56

标签: c++ algorithm red-black-tree interval-tree

我正在尝试找到一个有效的C ++间隔树实现(很可能基于红黑树)而没有病毒或限制性许可。任何指向干净的轻量级独立实现的指针?对于我想到的用例,一开始就知道了一组区间(可能会有一百万个),我希望能够快速获得一个与给定区间重叠的区间列表。因此,一旦构建的树将不会改变 - 只需要快速查询。

3 个答案:

答案 0 :(得分:4)

我在C ++ https://github.com/ekg/intervaltree编写了一个基于模板的区间树实现。 MIT许可证。享受。

答案 1 :(得分:3)

C ++标准库提供红/黑树std::mapstd::multimapstd::setstd::multiset

实际上,我想不出任何方法来处理这个问题比保留std::map迭代器对并将这些迭代器对传递给upper_bound()lower_bound()更有效。你希望迭代器对本身保存在一个映射中,这样你就可以很容易地将这些对可能在该区间中归零(如果“候选区间”中的开始迭代器出现在给定区间的结束之后)你正在看,然后你可以跳过检查 - 以及所有后来 - 迭代器对。)

答案 2 :(得分:1)

this link还有一个Interval树的C#实现。为那些需要的人翻译成C ++很容易

相关问题