priority queue的初始化方式比较丰富,具体如下:
//优先级队列
#include <queue>
#include <iostream>
using namespace std;
int main()
{
priority_queue <int> q1;//创建一个保存int的空优先级队列
if (q1.empty())
cout << "q1是空的,它的数据个数为:" << q1.size() << endl;
//创建一个保存int,且用deque保存内部数据的优先级队列(默认为升序)
priority_queue <int, deque <int> > q2;
q2.push(5); //入队
q2.push(15);//入队
q2.push(10);//入队
cout << "q2的数据:";
while (!q2.empty())//只要q2不为空,循环继续
{
cout << q2.top() << " "; //输出第一个元素的值(最大)
q2.pop(); //删除第一个元素
}
cout << endl;
//创建保存int,用vector保存内部数据且降序的优先级队列
priority_queue <int, vector<int>, greater<int> > q3;
q3.push(2); //入队
q3.push(1);//入队
q3.push(3);//入队
cout << "q3的数据:";
while (!q3.empty())
{
cout << q3.top() << " ";//输出第一个元素的值(最小)
q3.pop(); //删除第一个元素
}
cout << endl;
q1.push(100);
q1.push(200);
//利用q1创建一个新的优先级队列q4
priority_queue <int> q4(q1);
cout << "q4 的数据:";
while (!q4.empty())
{
cout << q4.top() << " ";
q4.pop();
}
cout << endl;
// 利用迭代器创建优先级队列
vector <int> v5{10,30,20,40};
priority_queue <int> q5(v5.begin(), v5.end());
cout << "q5的数据:";
while (!q5.empty())
{
cout << q5.top() << " ";
q5.pop();
}
cout << endl;
return 0;
}