C++堆的两种实现方式

c++堆两种方式

1.优先队列priority_queue

2.make_heap()

下面分别来介绍常用用法:

1.

创建大顶堆:

priority_queue <int,vector<int>,less<int> >q;

创建小顶堆:

priority_queue <int,vector<int>,greater<int> > q;

默认方式(创建大顶堆):

priority_queue<int> Q;

访问头元素:

Q.top();

判断堆是否为空:

Q.empty();

往堆内 插入元素 (并排序):

Q.push(100);

弹出堆顶元素:

Q.pop();

2.

make_heap的方式创建的堆要和vector息息相关。

创建大顶堆:

vector<int> nums={2,1,4,7,4};
make_heap(nums.begin(), nums.end(), less<int>());

 创建小顶堆:

vector<int> nums={2,1,4,7,4};
make_heap(nums.begin(), nums.end(), greater<int>());

默认方式(创建大顶堆):

vector<int> nums={2,1,4,7,4};
make_heap(nums.begin(), nums.end());

访问堆顶元素:

nums[0]

往堆中插入元素:

make_heap(nums.begin(), nums.end(), greater<int>());
nums.push_back(6);
push_heap(nums.begin(), nums.end(), greater<int>());

删除堆顶元素:

 

pop_heap(nums.begin(),nums.end());
nums.pop_back();

参考链接:

https://blog.csdn.net/weixin_44176696/article/details/104212081 

https://www.cnblogs.com/huashanqingzhu/p/11040390.html 

 


版权声明:本文为weixin_43098069原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。