STL--priority queue优先级队列-定义及初始化

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;
}

上一篇:SQL Server 用户应当如何防范 Mallox (.hmallox) 勒索软件袭击


下一篇:Unity-Invoke带参数的代码一个