相关疑难解决方法(0)

std :: map具有高效的第n个元素访问权限

我有一组数据需要存储在有序映射中(即通过键有效插入,删除和定位项目),但我还需要能够找到第n个元素而无需遍历整个映射(有时可能会有成千上万的物品).

我知道一种方法:使用红色/黑色树,但也要保留每个节点的一条腿上的子项目总数.它使插入和删除速度稍慢(因为你必须像沿着路径更新路径上每个节点的计数),但是你可以在找到密钥的大致相同的时间内找到任何n第n个元素.

我想知道是否存在我可以使用的这种东西的现有C++实现.如果没有,我可以自己写,但我真的不愿意.


编辑:我得到了一些关于用例的澄清.我稍微误解了一下:在按键查找项目后,他们需要能够有效地找出找到的项目是什么索引,以正确显示滚动条.

一个合理的需求,我上面描述的数据结构仍然适用于它,所以我仍然在寻找答案.但是,由于似乎还没有人提出一个,我将开始自己编码.

c++ data-structures

21
推荐指数
1
解决办法
1万
查看次数

获取大于数字的元素数量

我试图解决以下问题:正在将数字插入容器中.每次插入一个数字时,我都需要知道容器中有多少元素大于或等于当前插入的数字.我相信这两个操作都可以以对数复杂度完成.

我的问题: C++库中是否有可以解决问题的标准容器?我知道std::multiset可以在对数时间插入元素,但是如何查询呢?或者我应该实现一个数据结构(从二叉搜索树)来解决它?

c++ algorithm containers

13
推荐指数
1
解决办法
5066
查看次数

是否有任何支持以下操作的 boost/stl 容器?

我正在寻找可以提供以下功能的 stl/boost 容器:

  1. 按排序顺序自动插入元素。(日志 n)
  2. 从起始节点返回元素的索引/深度。(日志 n)

如果没有,那么实现这一目标的最佳方法是什么?我正在考虑使用双向链接列表的解决方案。那会是解决这个问题的好选择吗?

c++ boost stl c++11

3
推荐指数
1
解决办法
928
查看次数

标签 统计

c++ ×3

algorithm ×1

boost ×1

c++11 ×1

containers ×1

data-structures ×1

stl ×1