【发布时间】:2014-04-15 19:38:02
【问题描述】:
我正在寻找可以提供以下功能的 stl/boost 容器:
- 按排序顺序自动插入元素。 (log n)
- 从起始节点返回元素的索引/深度。 (log n)
如果没有,实现这一目标的最佳方法是什么?我正在考虑使用双向链接列表的解决方案。这是解决这个问题的好选择吗?
【问题讨论】:
-
有序双向链表的插入成本为 O(#list/2)。反正为什么一定要排序呢?
-
一个创建良好的容器类将被平衡,因此深度不会与海量数据集无关。在这一点上,您可能会更领先于使用哈希
-
我对 CS 世界或 'O(n) etc' 世界一无所知,但对我来说,这听起来像是一个树容器而不是双链表。
-
在现实生活中通常用 O(log(n)) 插入比用 O(1) 插入要慢,最后用 O(nlog(n)) 排序。我总是只使用向量和标准快速排序
-
第一个要求意味着你需要一个关联容器。但是在 2. 你需要 O(logN) 查找还是随机访问?换句话说,你是想找到一个元素还是跳一些元素?