【发布时间】:2013-07-16 12:30:55
【问题描述】:
我愿意用一个数据结构作为常数空间的溢出缓冲区。我想要有效地插入,但最重要的是有效地删除 min 元素。我正在考虑使用堆,因为我有 O(log(n)) find_min() 和 log(n) 插入和删除。另一方面,我不明白与红黑树相比的优势,因为它也有 O(log(n)) 插入和删除,但 O(1) 找到最小值/最大值。以及排序输出的优势(我不在乎)。
问题涉及到:Is a red-black tree my ideal data structure?
既然我可以从 std::map 和 boost::heap 获得两种结构,为什么我应该更喜欢使用堆而不是红黑树? 最后,使用红黑树,我还有 O(log(n)) 搜索条目的时间,而对于堆,时间是 O(n),这很重要,因为存在重复。
【问题讨论】:
-
考虑一个环形缓冲区。不知道是否适合你的使用。
标签: c++ algorithm data-structures red-black-tree binary-heap