C++ - 区间树实现

2024-03-02

有人知道有什么好办法吗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(使用前将#替换为@)

C++ - 区间树实现 的相关文章

随机推荐

  • 火狐滚动条

    伙计们 有没有一种方法可以在 Firefox 中自定义滚动条 我尝试在 chrome 上使用类似的技术 但我想这仅适用于 chrome 经过一些研究后 我发现无法使用此方法在 Firefox 上自定义它由于引擎中的错误 所以我正在寻找一种替
  • 使用 Vision api 在脸上用可绘制/绘画进行拍照

    我在尝试什么 我正在尝试在脸上使用可绘制 绘画来拍照 但是我无法将两者都放在同一张照片上 我已经尝试过什么 我尝试过使用CameraSource takePicture但我只是得到了脸上没有任何可绘制 油漆的脸 mCameraSource
  • jqGrid - 防止取消选择行

    使用 jqGrid 如果我再次单击所选行 则该行将被取消选择 有什么办法可以防止这种情况发生吗 我希望该行仍被选中 很好的解决方案 更紧凑的版本 beforeSelectRow function rowid e return this ge
  • Java数据文件在类之间共享

    我正在制作一个从文件 Serialized objectInputStream 读取的小程序 该文件是一个注册表列表 其中每个条目都有一个设置为 true 或 false 的布尔变量 在这个程序中 我有两个独立的 JPanel 类 一个是
  • javascript代码是否需要以“