基于迭代器的自定义堆函数

Custom heapify function based on iterators

本文关键字:函数 自定义 迭代器      更新时间:2023-10-16

我正在尝试创建一个适用于我的自定义容器的自定义(而不是使用 STL 一个)堆排序方法。我有迭代器,但是我找不到make_heap算法的描述。据我了解,它的作用类似于排列元素,使它们看起来像一个二进制堆,每个父节点旁边都有其两个子节点,但是子节点的子节点呢?它究竟是如何安排的?

调用 std::make_heap 后的元素顺序是实现定义的。唯一指定的是最大的元素放在范围的第一个。

我相信在最常见的实现中,如果一个节点存储在索引i,那么它的左子节点存储在2*i+1,右子节点存储在2*i+2