优先队列不打印推入其中的值
Priority Queue not printing the values pushed into it
我刚开始学习数据结构,偶然发现了优先级队列,我写了一个简单的程序来打印我在队列中推送的值,但它不会打印任何东西。
#include<iostream>
#include <queue>
using namespace std;
int main(){
priority_queue<int> maxi;
priority_queue<int, vector<int>, greater<int>> mini;
int m = maxi.size();
int n = mini.size();
maxi.push(1);
maxi.push(3);
maxi.push(2);
maxi.push(5);
maxi.push(0);
cout<<"Max size->"<<maxi.size()<<endl;
for(int i=0; i<m; i++){
cout<<maxi.top()<<" ";
maxi.pop();
}cout<<endl;
mini.push(1);
mini.push(3);
mini.push(2);
mini.push(5);
mini.push(0);
cout<<"Mini size->"<<mini.size()<<endl;
for(int j=0; j<n; j++){
cout<<mini.top()<<" ";
mini.pop();
}cout<<endl;
}
我已经阅读了很多文章,但似乎没有发现任何错误。即使编译器也没有给出任何错误。
在向它们添加元素之前,您正在获取 maxi 和 mini 的大小。由于您正在复制大小的值(解释为 here),因此在将元素添加到容器时不会更新它。因此你的循环根本没有执行。
我刚开始学习数据结构,偶然发现了优先级队列,我写了一个简单的程序来打印我在队列中推送的值,但它不会打印任何东西。
#include<iostream>
#include <queue>
using namespace std;
int main(){
priority_queue<int> maxi;
priority_queue<int, vector<int>, greater<int>> mini;
int m = maxi.size();
int n = mini.size();
maxi.push(1);
maxi.push(3);
maxi.push(2);
maxi.push(5);
maxi.push(0);
cout<<"Max size->"<<maxi.size()<<endl;
for(int i=0; i<m; i++){
cout<<maxi.top()<<" ";
maxi.pop();
}cout<<endl;
mini.push(1);
mini.push(3);
mini.push(2);
mini.push(5);
mini.push(0);
cout<<"Mini size->"<<mini.size()<<endl;
for(int j=0; j<n; j++){
cout<<mini.top()<<" ";
mini.pop();
}cout<<endl;
}
我已经阅读了很多文章,但似乎没有发现任何错误。即使编译器也没有给出任何错误。
在向它们添加元素之前,您正在获取 maxi 和 mini 的大小。由于您正在复制大小的值(解释为 here),因此在将元素添加到容器时不会更新它。因此你的循环根本没有执行。