c++ STL之queue

1. 头文件

#include<queue>

2. 普通队列queue

2.1 普通队列的声明与初始化

2.1.1 普通声明

queue<int> q;

2.1.2 结构体

struct node
{
    int x,y;
};
queue<node>   q;

2.2 普通队列的基本操作

push(x) 将x压入队列的末端
pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
front() 返回第一个元素(==队顶元素==)
back() 返回最后被压入的元素(队尾元素)
empty() 当队列为空时,返回true
size() 返回队列的长度

3. 优先队列priority_queue

优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新定义比较规则。

3.1 优先队列的声明与初始化

    //对于基础类型 默认是大顶堆
    priority_queue<int> a;  //等同于 priority_queue<int, vector<int>, less<int> > a;
    //这里一定要有空格,不然成了右移运算符↓
    priority_queue<int, vector<int>, greater<int> > c;  //小顶堆
    for (int i = 0; i < 5; i++) 
    {
        a.push(i);
        c.push(i);
    }
    while (!a.empty()) 
    {
        cout << a.top() << ' ';
        a.pop();
    } 
    // 输出大顶堆a:4 3 2 1 0
    
    while (!c.empty()) 
    {
        cout << c.top() << ' ';
        c.pop();
    }
    // 输出小顶堆c:0 1 2 3 4

3.2 优先队列的基本操作

empty() 如果队列为空返回真
pop() 删除队顶元素
push() 加入一个元素
size() 返回优先队列中拥有的元素个数
top() 返回优先队列队顶元素(队列中的front()变成了top()

3.3 优先队列的自定义优先级

struct cmp {     
  operator bool ()(int x, int y)     
  {        
     return x > y; // x小的优先级高       //也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高
  }
};
priority_queue<int, vector<int>, cmp>q;    //定义方法
//其中,第二个参数为容器类型。第三个参数为比较函数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值