数据结构学习:堆与priority_queue

堆的例题初步学习
大顶堆和小顶堆的实现除了用vector实现,可以直接用STL中的priority_queue容器。

便于理解的代码如下:

#include<iostream>
#include<algorithm>
#include<queue>
#include<functional>

using namespace std;

int main()
{
    
    
	priority_queue<int, vector<int>, less<int>> p;//大顶堆:这个等同于priority_queue<int>
	p.push(3);	//p:3
	p.push(4);	//p:43
	p.push(2);	//p:432
	p.push(5);	//p:5423    /*注意这里并不是5432,故没有严格排序,但堆顶可以确保*/
	p.push(1);	//p:54321

	int getp = p.top();	//getp取得堆顶元素5,堆不是front,而是top!

	p.pop();	//p:4321
	p.pop();	//p:312     /*注意这里并不是321,故没有严格排序,但堆顶可以确保*/
	p.pop();	//p:21
	p.pop();	//p:1
	p.pop();	//p

	priority_queue<int, vector<int>, greater<int>> q;//小顶堆
	q.push(3);	//q:3
	q.push(4);	//q:34
	q.push(2);	//q:243     /*注意这里并不是234,故没有严格排序,但堆顶可以确保*/
	q.push(5);	//q:2435    /*注意这里并不是2345,故没有严格排序,但堆顶可以确保*/
	q.push(1);	//q:12354   /*注意这里并不是12345,故没有严格排序,但堆顶可以确保*/

	int getq = q.top();	//getp取得堆顶元素1,堆不是front,而是top!

	q.pop();	//q:2435    /*注意这里并不是2345,故没有严格排序,但堆顶可以确保*/
	q.pop();	//q:345
	q.pop();	//q:45
	q.pop();	//q:5
	q.pop();	//q

	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103848370