| 类别: 算法 | 组件类型: 函数 |
template <class RandomAccessIterator>
bool is_heap(RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class StrictWeakOrdering>
inline bool is_heap(RandomAccessIterator first, RandomAccessIterator last,
StrictWeakOrdering comp)
int A[] = {1, 2, 3, 4, 5, 6, 7};
const int N = sizeof(A) / sizeof(int);
assert(!is_heap(A, A+N));
make_heap(A, A+N);
assert(is_heap(A, A+N));
[1] 堆是 随机访问迭代器 范围中元素排序的一种特定方式[f, l). 堆之所以有用(特别是对于排序或作为优先级队列)是因为它们满足两个重要的属性。首先,*f是堆中最大的元素。其次,可以在对数时间内将元素添加到堆中(使用push_heap),或删除*f。在内部,堆是一棵树,以顺序范围表示。构造树的方式使得每个节点都小于或等于其父节点。