我将实现一个基于指针的二进制堆。我想要的是,堆积工作"工作"以各种方式取决于一些参数。例如,堆可以用多种方式表示:指向左子,右子和父,左子/右兄弟样式等的指针。独立于表示,我希望基本实现保持不变。例如,我不想实现两个不同的 Siftdown 方法,具体取决于表示。我在考虑将节点类型和迭代器类型作为参数提供给堆。然后, Siftdown ,比方说,可以使用给定的迭代器来完成它的工作。我想知道在实际实现代码中使用迭代器是否有好的风格?此外,我正在研究可能对我有用的已知设计模式。 Bridge 和策略模式似乎很有趣。
所以,我的问题有两个:
感谢。