uacs2024

导航

c++ priority_queue(优先级队列)

priority_queue是一个容器适配器,提供了常数时间的最大元素查找。

通常实现为堆。堆是一种数据结构,其中最大(或最小)元素始终位于顶部。

priority_queue是一个模板类,定义在头文件中。它有三个模板参数:元素类型、容器类型和比较函数类型(可选)。

默认情况下,它使用std::vector作为其底层容器 。

成员函数:

构造:

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

int main ()
{
    int myints[]= {10,60,50,20};
    priority_queue<int> q1;//默认是大元素在队首
    priority_queue<int> q2(myints,myints + 6);//6的意思是有6个元素,多余的元素默认为0。如果比原来的数组元素少,会丢弃原数组部分元素
    priority_queue<int, vector<int>, greater<int>> q3(myints,myints + 8);//小元素在队首
    while(!q1.empty()){
        cout << q1.top() << endl;
        q1.pop();
    }
    cout << "--------" << endl;
    while(!q2.empty()){
        cout << q2.top() << endl;
        q2.pop();
    }
    cout << "--------" << endl;
    while(!q3.empty()){
        cout << q3.top() << endl;
        q3.pop();
    }
    return 0;
}

 

posted on 2025-03-13 11:19  ᶜʸᵃⁿ  阅读(88)  评论(0)    收藏  举报