C++ 基于指针的二进制堆

C++ 基于指针的二进制堆,c++,design-patterns,iterator,heap,generic-programming,C++,Design Patterns,Iterator,Heap,Generic Programming,我将实现一个基于指针的二进制堆。我想要的是堆根据一些参数以各种方式“工作”。例如,堆可以用多种方式表示:指向左子级、右子级和父级的指针、左子级/右同级样式等等。独立于代表性,我希望基本实现保持不变。例如,我不想实现两种不同的Siftdown方法,这取决于表示形式。我在考虑将节点类型和迭代器类型作为堆的参数。然后,Siftdown可以使用给定的迭代器完成它的工作。我想知道在实际的实现代码中使用迭代器是否是一种好的风格?此外,我正在研究可能对我有用的已知设计模式。桥梁和战略模式似乎很有趣 因此,我的

我将实现一个基于指针的二进制堆。我想要的是堆根据一些参数以各种方式“工作”。例如,堆可以用多种方式表示:指向左子级、右子级和父级的指针、左子级/右同级样式等等。独立于代表性,我希望基本实现保持不变。例如,我不想实现两种不同的Siftdown方法,这取决于表示形式。我在考虑将节点类型和迭代器类型作为堆的参数。然后,Siftdown可以使用给定的迭代器完成它的工作。我想知道在实际的实现代码中使用迭代器是否是一种好的风格?此外,我正在研究可能对我有用的已知设计模式。桥梁和战略模式似乎很有趣

因此,我的问题有两个:

  • 在实现代码中使用迭代器是一种良好的实践吗
  • 对适合我的设计模式有什么想法吗

  • 谢谢。

    对不起,我帮不了你太多,但是你不想使用Boost d-ary堆有什么原因吗?是的。这是一个研究项目。实际上,我正在使用一个完美的二进制堆森林和一个新的数字系统(想想二项式队列)实现一个优先级队列。我有理论部分,但我不是一个C++程序员(C++是一个需要各种原因)。不过我对C很了解。但是,谢谢你的回复。但是我想Boost库可以作为一个很大的灵感给我们一些代码。也许可以删除第2部分:“关于设计模式的任何想法符合我的目的吗?”因为它太笼统了