C++容器之Priority queue

来源:互联网 发布:mac steam好玩的游戏 编辑:程序博客网 时间:2024/06/07 00:27

简介

         Priorityqueue是一种容器适配器,它的第一个元素始终是容器中的最大值。

         Priorityqueue作为容器适配器而实现,它是一种使用指定的容器类作为其潜在的容器存储元素,并提供一组元素操作函数的类。

         Priorityqueue的潜在容器可以是标准容器类,也可以是通过特殊设计的容器类。这些容器类必须满足能随机访问且支持如下操作:

Ø  front()

Ø  push_back()

Ø  pop_back()

标准容器vector和deque都能满足其要求。默认情况下,如果创建priority queue时没有指定容器类作为其潜在的容器,vector容器类将作为其默认的潜在类。

成员函数


priority_queue::priority_queue()

         创建一个priority_queue容器适配器对象。

priority_queue::empty()

         判断一个priority_queue是否为空,如果为空返回true,否则返回false。

priority_queue:size()

         计算priority_queu中元素的个数。

priority_queue::top()

         返回优先队列顶端的元素的引用。

priority_queue::push()

         向优先队列中插入一个新的元素。

priority_queue::emplace()

         向队列中插入一个元素,插入的元素有其构造函数构造。

priority_queue::pop()

         删除队列顶端的元素。

priority_queue::swap()

         交换两个队列中元素。

示例程序

#include <iostream>#include <queue>#include <deque>#include <functional>using namespace std;class comparison{public:comparison(const bool& revparam = false){reverse = revparam;}bool operator() (const int& m, const int& n) const{if(reverse){return m > n;}else{return m < n;}}private:bool reverse;};int main(void){int arr[] = {10, 50, 30, 20, 60};// priority_queue::priority_queue()priority_queue<int> first;priority_queue<int> second(arr, arr+5);priority_queue<int, vector<int>, greater<int>>third(arr, arr+5);priority_queue<int, vector<int>, comparison> fourth;typedef priority_queue<int, vector<int>, comparison> pq_type;pq_type firth(comparison());pq_type sixth(comparison(true));// priority_queue::empty()if(second.empty()){cout << "Second is empty." << endl;}else{cout << "Second is not empty." << endl;}// priority_queue::size()cout << "The size of second : " << second.size() << endl;// priority_queue::top()cout << "second.top() is : " << second.top() << endl;// priority_queue::push()second.push(80);// priority_queue::emplace()second.emplace(100);// priority_queue::pop()cout << "second.top() is : " << second.top() << endl;second.pop();cout << "second.top() is : " << second.top() << endl;// priority_queue::swap()first.swap(second);cout << "The size of first : " << first.size() << endl;cout << "The size of second : " << second.size() << endl;}


0 0
原创粉丝点击