queue用法

二、#include < queue >

头文件queue主要包含循环队列queue和优先队列priority_queue两个容器。

  • queue:

    • push(x): 把x元素入队。O(1)
    • pop(): 出队(从队头),从队列中删除。O(1)
    • front(): 返回队头元素。O(1)
  • . priority_queue

    • push(x): 把x元素入堆。O(log n)

    • pop(): 删除堆顶元素。O(log n)

    • top():查询堆顶元素(最大值)O(1)

      priority_queue可理解为一个大根二叉堆。
      priority_queue中存储的元素类型必须定义“小于号”,较大的元素会放在队列前面,内置的int, string等类型本身就可以比较大小。若使用结构体类型,则需要重载 “<"运算符。

例题入口

代码:

#include <queue>
#include <cstdio>
#include <iostream>
using namespace std; 
struct node {
   int x;
   node(int xx) {
   	x = xx;
   }
   friend bool operator <(node a, node b) {
   	return a.x > b.x; //转化为以x小的出队 ]
   	//重载了<符号。  这样priority_queue就会认为“大"的更”小“,”小“的更"大",从而x较小的元素会被放在堆顶。
   } 
};

int main() {
   queue<int> a;
   a.push(1);
   a.push(2);
   a.push(3);
   //一个一个出队  先进先出
   while (a.size()) {
   	//a.front() 返回队头第一个元素,但是不在队里删除 
   	printf("%d ", a.front());
   	//pop()函数将队头元素出队 
   	a.pop(); 
   } 
   printf("\n");
   //优先队列 priority_queue 那个元素优先,那个元素就先出队, int默认大的先出队 
   priority_queue<int> b;
   b.push(1);	  
   b.push(2);	  
   b.push(3);
   while (b.size()) {
   	//b.top() 查询堆顶元素
   	printf("%d ", b.top());
   	b.pop(); 
   }	  
   printf("\n");
   
   priority_queue<node> c;
   c.push(node(3)); 
   c.push(node(6)); 
   c.push(node(10)); 
   while (c.size()) {
   	printf("%d ", c.top().x);
   	c.pop();
   }
   return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值