我想在允许这样的结构中添加几个对象:
插入对象,立即对整个结构进行排序,这样我就有了一个int的降序排列;
能够更改对象排序的int(我的意思是:说对象编号为2,现在的int为5,所以它重新排序结构);
快速结构,因为它将每秒完全迭代60次;
能够按位置直接访问对象;
只需要从上到下进行迭代:更高的INT来降低INT
不需要删除,但以后可能会有用。
关于如何使用该结构的一些迹象会很棒,因为我对C ++标准库知之甚少。
答案 0 :(得分:6)
您列出的所有操作(按索引查找除外)都可以由标准二进制搜索树支持,以整数值为键。这使您能够按排序顺序迭代元素,并在任何插入过程中保持对象的排序。正如@njr所提到的,您还可以通过从二叉搜索树中删除对象,更改其优先级,然后将它们重新插入二叉搜索树来更新优先级。
要支持按索引进行随机访问,您应该考虑查看 order statistic trees ,这是二进制搜索树上的一个变体,除了所有其他操作支持非常快(O(log n) )通过索引查找元素。也就是说,您可以非常有效地查询排序序列中的第15个元素,或者第17个等。订单统计树不是C ++标准库的一部分,但 this older question 包含可以将您链接到实施的答案。
希望这有帮助!
答案 1 :(得分:2)
使用集合或地图
对于要求1 - 提供自定义排序功能
For 2 - 删除项目并再次添加(或提供一个包装来执行该操作)
3没有意义(列表有多大,处理器/内存有多快)
4 - 您确定需要吗?当位置突然改变(某些项目被添加或删除)时尝试通过位置访问它似乎有点奇怪
5 - 与1相同