我是靠谱客的博主 不安秀发,最近开发中收集的这篇文章主要介绍关于队列(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;
}

最后

以上就是不安秀发为你收集整理的关于队列(queue)的使用优先队列的全部内容,希望文章能够帮你解决关于队列(queue)的使用优先队列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部