admin管理员组文章数量:1624347
1.
代码如下(示例):
priority_queue < int >默认构建的是一个大根堆,所以每次从头取数据得到的是一个从大到小的队列排序.
priority_queue< int> 实际上等价于 priority_queue<int, vector, less< int>>。
#include <iostream>
#include <queue>
using namespace std;
void common_sort()
{
int source_data[10] = {3, 5, 8, 1, 10, 2, 9, 15, 13, 16};
// 默认大根堆,实现由大到小排序
priority_queue<int> q;
for (auto n : source_data)
q.push(n);
while (!q.empty())
{
cout << q.top() << endl;
q.pop();
}
}
2.
小根堆: priority_queue<int, vector< int>, greater< int>> q;
代码如下(示例):
#include <iostream>
#include <queue>
using namespace std;
void max_k_num()
{
int source_data[10] = {3, 5, 8, 1, 10, 2, 9, 15, 13, 16};
int k = 5;
// 小根堆
priority_queue<int, vector<int>, greater<int>> q;
for (auto n : source_data)
{
if (q.size() == k)
{
if (n > q.top())
{
q.pop();
q.push(n);
}
}
else
q.push(n);
}
while (!q.empty())
{
cout << q.top() << endl;
q.pop();
}
}
本文标签: 队列定义大小priorityqueue
版权声明:本文标题:C++ 优先队列priority_queue,如何定义大小根堆 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728896587a1178490.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论