大家好,我是苏貝,本篇博客带大家了解C++的自主实现优先级队列priority_queue,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
我们来实现下面5个成员函数
先实现不带仿函数的priority_queue,最后再加上仿函数。我们直接用其它容器来实现优先级队列
(A) empty/size/top
以下3个成员函数可以直接复用容器_con的成员函数
(B) push
往优先级队列插入,即往一个大堆中插入数据
思路:先在堆的最后插入数据,再不断向上调整
注意:向上调整adjust_up的循环条件不能写成parent>=0,因为parent是size_t类型的,永远>=0。
© pop
往优先级队列pop,即删除堆顶的元素
思路:先不删除堆顶的元素a,将它与堆的最后一个数据b交换位置,再删除a,最后将b不断向下调整
将上面5个函数都写完了,就可以开始使用自主实现的优先级队列了
(D) 仿函数
我们现在加上仿函数,优先级队列的仿函数有缺省值less,表示大堆存储。仿函数greater,表示小堆存储
有了仿函数,我们的adjust_up和adjust_down就要调整一下了
下面来使用
好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️