我愿意使用数据结构作为常量空间的溢出缓冲区。我想要有效地插入,但最重要的是有效地删除 min 元素。我正在考虑使用堆,因为我有 O(log(n)) find_min() 和 log(n) 插入和删除。另一方面,我不明白与红黑树相比的优势,因为它也有 O(log(n)) 插入和删除,但 O(1) 找到最小值/最大值。以及排序输出的优势(我不在乎)。
问题涉及:红黑树是我理想的数据结构吗?
既然我可以从 std::map 和 boost::heap 获得两种结构,为什么我应该更喜欢使用堆而不是红黑树?最后,使用红黑树,我还有 O(log(n)) 搜索条目的时间,而对于堆,时间是 O(n),这很重要,因为存在重复项。