有人知道有什么好办法吗interval tree
在C++中实现?
显然,模板驱动的东西更好boost
- 风格。
还有一个问题 - 如果有人测试过,会做一个基本的测试std::vector
基于排序的区间树实现可以击败通用区间树(O(lg) 运算)在实践中?
我有完全相同的需求。我找不到任何合适的(简单的、现代的、可移植的)实现,所以我使用了Brent Pedersen 的 python 实现 http://hackmap.blogspot.com/2008/11/python-interval-tree.html作为指南并编写了准系统C++版本 https://github.com/ekg/intervaltree。 IntervalTree 的行为类似于标准 STL 容器,但由于其简单性(例如没有迭代器)而有一些注意事项。你可以像这样使用它(“T”是任意类型):
vector<Interval<T> > intervals;
// ... make intervals!
IntervalTree<T> tree(intervals);
你这样查询:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)