存储唯一元素但回答 C++ 中另一种排序查询的数据结构;
是否存在一个数据结构,它唯一地存储其元素(对于给定的比较函数),但回答该数据结构中相对于另一个比较函数的最高元素的查询?
例如:我有一个具有两个属性的类:
1)尺寸
2)值
我想要一个数据结构,它唯一地存储所有元素的大小,但回答具有最高值的元素的查询。
将 std::set 与大小比较函子一起使用给了我唯一性,但对最高值的查询将具有线性运行时间...
有更好的办法吗?
(我将“添加元素,然后要求最高值”并继续迭代,直到达到某个终止点)
任何信息将不胜感激(论文等)
is there a data structure, which stores its elements uniquely (for a given compare-Functor) but answers queries for the highest element in that data structure with respect to another compare-Function ?
For Example: I have a class with two properties :
1) the size
2) the value
I'd like to have a data structure which stores all elements uniquely regarding its size but answers queries for the element with the highest value.
Using std::set with a compare functor for the sizes gives me uniqueness but queries for the highest value will have linear runtime...
Is there a better way?
(I'll 'add elements then ask for the highest value' and keep iterating this until a certain termination point is reached)
Any information would be appreciated (papers etc)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Boost::MultiIndex<我想到了。
Boost::MultiIndex comes to mind.
您可以使用库 Boost.Multi 来实现您想要的-index
特别检查 教程中的这个示例,它非常接近您的用例。
What you want can be achieved using the library Boost.Multi-index
Check in particular this example in the tutorial, which is very close to your use case.
它可能是一个kd-tree(k维树)吗?在你的例子中,k 是 2。
Could it be a kd-tree (k-dimensional tree)? In your case, k would be 2.