我有一个要求,我必须根据某些属性值更新图形前端的颜色。属性值有不同的范围......比如说-30到-45,-60到-80等等......所以,我需要一个数据结构来存储这些范围(预填充它们)......并且当我确定该点时,我想知道该点在 O(1) 时间或 O(1) 时间内落在的范围(logN) 时间...所以,我的查询将由一个点组成,输出应该是包含该点的唯一范围...
我对范围树和线段树感到困惑......我想在 c++ stl 映射之上构建树。
你需要的是所谓的区间树。http://en.wikipedia.org/wiki/Interval_tree http://en.wikipedia.org/wiki/Interval_tree。
不幸的是你不能使用std::set<>
获得 O(log N) 插入、删除和查询,因为树节点需要包含额外的数据。您可以在这里阅读有关它们的信息http://syedwaqarahmad.webs.com/documents/t。cormen-_introduction_to_algorithms_3rd_edition.pdf http://syedwaqarahmad.webs.com/documents/t._cormen_-_introduction_to_algorithms_3rd_edition.pdf第 14.3 章。
相反,您可以使用升压。它有间隔容器库。
http://www.boost.org/doc/libs/1_46_1/libs/icl/doc/html/index.html http://www.boost.org/doc/libs/1_46_1/libs/icl/doc/html/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)