关于队列(queue)的使用

队列也是一个容器,队列其实完全可以用数组来模拟,只不过用队列queue来说比较方便,特别是一些复杂的代码用队列queue可以是代码更加简洁,在BFS里面有时候比较好用。

还是一些模板,记着书写格式,用着还是比较简单的。

但是有局限性,因为只能尾部插入和尾部删除,也不能遍历;

头文件:#include<queue>

创建:queue<int>v;//尖括号内为定义队列里面存的数据的类型,v是你定义队列的名称。

入队:v.push(a);//a是要入队的数值;

删除:v.pop();//代表要删除队列首端的数值;

元素个数: pos=v.size();pos为队列里面存的元素的个数;

判断是否为空: if(v.empty())//判断队列是否为空,空返回值为1,非空返回值为0;

首端元素:pos=v.front();pos为队列v里面的首部位置的值;
尾端元素:pos=v.back();pos为队列v里面的尾部位置的值;

优先队列

在队列的基础上增加了一些功能,就是队列可以自动将队列中的数据排序,按照递增或者递减去排序。

他的本质是一个堆实现的。

//头文件不变。

// 定义:
       priority_queue<Type, Container, Functional>yi;
       
       第一个参数是指队列存储数据的类型。
       第二个指容器类型,必须是用数组实现的容器,vector,deque等,常用的和默认的是vector。
       第三个是指排序方式。

//第三个参数:
            greater<int>  为升序队列存储。
            less<int>     为降序队列存储。

如果缺少第二个第三个参数将默认为 降序队列存储。

例子:

#include<bits/stdc++.h>
using namespace std;

int main()//可以通过代码跑一遍看看,结果是什么。
{
	priority_queue<int>yi;//默认为降序存储
	for(int i=1;i<10;i++)
	yi.push(i);
	
	while(!yi.empty())
	{
		cout<<yi.top();
		yi.pop();
	}


    priority_queue<int,vector<int>,greater<int> >yi;//升序存储
	for(int i=1;i<10;i++)
	yi.push(i);
	
	while(!yi.empty())
	{
		cout<<yi.top();
		yi.pop();
	}
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值