C++提供队列是一种容器适配器,符合数据结构中队列的特征,是一种FIFO的数据结构
back()返回队尾数据的一个引用empty()如果队列为空,返回true,否则返回falsefront()返回队首元素的引用pop()将队首元素出队push()将一个元素入队size()返回队列中元素的个数
队列的衍生容器
deque 双向队列
deque()构造器
能通过以下四种方式创建:- 无参:创建一个空的双向队列
 size:创建一个大小为size的双向队列num and val:放置num个val的拷贝到队列中from deque:从from创建一个内容一样的双向队列
assign(num,val):给双向队列设置num个val的值at(pos):返回指向双向队列中位置pos上的元素的引用pop_back():删除双向队列尾部的元素pop_front():删除双向队列头部的元素push_back():向队列尾部添加元素push_front():向队首添加元素
priority queue 优先队列
在优先队列中,存储的元素被赋予了优先级别。当访问元素的时候,具有最高优先级别的元素会最先被删除。
priority_queue():构造器
使用基本的数据类型的时候,只需要传入数据类型;默认是大根堆
使用自定义的数据类型的时候,需要指定三个参数priority_queue<Type,Container,Functional>// 升序队列,小根堆priority_queue<int,vector<int>,greater<int>> q;// 降序队列,大根堆priority_queue<int,vector<int>,less<int>> q;
使用自定义数据类型:
按照Person类的number较大值设置优先级,(**number**大的先出)#include <bits/stdc++.h>using namespace std;class Person{public:int number;Person(){}Person(int number){this->number = number;}bool operator<(const Person& p) const{return this->number < p.number;}};class Person_Comparable{public:bool operator()(Person p1,Person p2){return p1.number < p2.number;}};int main(){priority_queue<Person,vector<Person>,Person_Comparable> q;Person p1(1);Person p2(2);Person p3(3);q.push(p1);q.push(p2);q.push(p3);while(!q.empty()){cout << q.top().number << endl;q.pop();}system("pause");return 0;}
top()返回优先队列中有最高优先级的元素
