【发布时间】:2012-02-28 21:55:55
【问题描述】:
是否有类似队列的数据结构也支持在任意点移除元素?入队和出队最常发生,但在速度方面,中间队列元素删除必须相似,因为可能存在最常见的操作。性能的一致性比绝对速度更重要。时间比记忆更重要。队列长度很小,在绝对峰值负载下不到 1,000 个元素。如果不是很明显,我会明确说明:不需要随机插入。
已标记 C++,因为那是我的实现语言,但我没有使用(也不想使用)任何 STL 或 Boost。仅限纯 C 或 C++(我会将 C 解决方案转换为 C++ 类。)
编辑:我想我想要的是一种也有队列接口的字典(或也有字典接口的队列),这样我就可以做这样的事情:
Container.enqueue(myObjPtr1);
MyObj *myObjPtr2 = Container.dequeue();
Container.remove(myObjPtr3);
【问题讨论】:
-
为什么不用 STL 或 Boost ?它们是纯 C++。否则,您需要编写自己的数据结构。
-
没有 STL?那你就得自己写了。我会用一棵树来更新左子节点中有多少个节点。应该是 log(n) 一切。
-
(I will wrap C solutions in a C++ class.)我拒绝继续阅读 -
@TimKemp:编程就是解决问题。库是您的问题中已经解决的部分。尽可能不使用它们既浪费又荒谬。
-
@Lightness:是的,我们以前去过那里,我坚定地支持 STL-is-not-the-std-lib 阵营。然而,大部分 STL 已被合并到 C++ 标准库中,我认为它是 C++ 的一部分(毕竟它是标准论文的主要部分)。
标签: c++ data-structures