概述
队列也是一个容器,队列其实完全可以用数组来模拟,只不过用队列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;
}
最后
以上就是不安秀发为你收集整理的关于队列(queue)的使用优先队列的全部内容,希望文章能够帮你解决关于队列(queue)的使用优先队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复