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