c++ stl 优先队列怎么输出全部数据,同时又获取top数据?

Posted code_kd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ stl 优先队列怎么输出全部数据,同时又获取top数据?相关的知识,希望对你有一定的参考价值。

总所周知,优先队列是一种常用的数据结构。

下面是一个简单的优先队列代码:


#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int main()

    priority_queue<pair<int, int>, vector<pair<int, int>>> q;
    for (int i = 0; i < 10; i++)
    
        q.push(make_pair(i, i + (i - i / 2 * (i % 2 ? -1 : 1)))); // 构建一个简单的优先队列,附带一些简单的数据
    
    while (!q.empty())
    
        // 输出优先队列的内容
        pair<int, int> top = q.top();
        q.pop();
        cout << top.first << " " << top.second << endl;
    
    return 0;

输出结果如下:

9 22
8 12
7 17
6 9
5 12
4 6
3 7
2 3
1 2
0 0

有时,我们在调试时可能会出现需要输出优先队列的全部数据来观看数据情况。

例如,我们需要在输入top数据之前输出当前优先队列的数据。

方法:使用优先队列的构造函数构造一个和当前优先队列一样的数据,然后输出。

代码如下:



#inclu

以上是关于c++ stl 优先队列怎么输出全部数据,同时又获取top数据?的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL:优先级队列priority_queue的使用方法和模拟实现

比较器函数在优先队列 C++ STL 中如何工作?

c++ STL queue:deque+优先队列

C++:STL——栈队列和优先级队列的模拟实现

优先队列实现dijkstra算法C++代码

C++ STL之priority_queue