一,基本的成员函数
back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数
二,queue 的基本操作举例如下:
1,queue入队,如例:q.push(x); 将x 接到队列的末端。
queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
2,队列使用数组:
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int>q;
int a[6];
for(int i=0;i<5;i++)
cin>>a[i];
for(int i=0;i<5;i++)
q.push(a[i]);
for(int i=0;i<5;i++)
{
cout<<q.front()<<endl;
q.pop();
}
return 0;
}
三,#include<queue>
queue<int>q;
结构体:struct node
{
int x,y;
};
queue<node>q;
四,优先队列
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是优先队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则,而是将当前队列中最大的元素出队。元素的比较规则则默认元素值由小到大排序,可以重新载“>”来重新定义比较规则。
基本操作:
empty() 如果队列为空返回真
pop() 删除队顶元素
push() 加入一个元素
size() 返回优先队列中拥有的元素个数
top() 返回优先队列队顶元素(队列中的front()变成了top())
在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。
((1)第一种用法,这是最常用的默认用法,即优先级高的先出队列,例如一个int优先队列,那么出队的时候就是int大的先出队列
举例:
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int>q;
for(int i=i;i<=5;i++)
{
q.push(i);
}
for(int i=0;i<5;i++)
{
cout<<q.top()<<endl;
q.pop();
return 0;
}//结果输出5 4 3 2 1;
(2)那么如果想要优先队列中低优先级的元素先出队列,怎么办呢? --- 自定义优先级
自己实现比较函数
- struct cmp1
- {
- bool operator ()(int x,int y)
- {
- return x>y; //小值优先
- }
- };
- struct cmp2
- {
- bool operator ()(int x,int y)
- {
- return x<y; //大值优先
- }
- };