【发布时间】:2011-03-10 06:49:46
【问题描述】:
我想知道为什么堆概念被实现为算法(make_heap、pop_heap、push_heap、sort_heap)而不是容器。我特别感兴趣的是一些人的解决方案也可以解释为什么set 和map 是容器而不是类似的算法集合(make_set add_set rm_set 等)。
【问题讨论】:
-
备案,有一个基于堆的容器:
priority_queue。 -
为什么不呢?对于堆,您可以使用任何随机访问序列。不强迫您使用特殊容器是好的。人们应该尝试将事物解耦。不,集合和地图不能很好地使用序列。对这些使用实际的二叉树要容易得多。
-
由于有些人似乎很困惑:kts指的是数据结构[en.wikipedia.org/wiki/Heap_(data_structure)],而不是free store。
-
@sellibitze:因为您可以轻松地将底层容器作为模板参数,例如
heap<type, vector> h; -
@Inverse:我同意,它不会是唯一的容器适配器。