c++ queue用法 入门必看 超详细

1、queue的作用

说到queue,大家一定会想到stack,同样是简单易用的数据结构之一。queue就是队列的意思,像大家日常排队一样,先排的人先用。stack则是相反的,后来的先用。这就有了queue先进先出,stack后进先出的说法。

queue是一个很简单的数据结构,但是却非常实用,同时也是必不可少的,其它的数据结构都无法替代队列。

queue常用于模仿队列,在算法中比较常用的有单调队列算法

相信看完本文就能上手使用了

2、queue的定义

queue<储存的类型> 容器名
如:
储存int型数据的队列 queue q;
储存double型数据的队列 queue q;
储存string型数据的队列 queue q;
储存结构体或者类的队列 queue<结构体名> q;

3、queue的成员函数

back() //返回最后一个元素 
empty() //如果队列空则返回真 
front() //返回第一个元素 
pop() //删除第一个元素 
push() //在末尾加入一个元素 
size() //返回队列中元素的个数 

示例代码:

#include<iostream>//c++标准头文件,可以使用cout,cin等标准库函数 
#include<queue>//使用queue时需要的头文件 
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,stack,map,set,vector,queue时都要使用
int main(){
	queue<int> q;//定义一个int类型的队列
	
	q.push(1);//在队尾添加元素1 
	q.push(2);//在队尾添加元素2
	q.push(3);//在队尾添加元素3
	cout<<"插入元素1、2、3后,目前队列中的元素:1 2 3"<<endl;
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列中的元素:2 3 "<<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	 
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列中的元素:3" <<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列是空的"<<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"队列是空的时候将不能用q.front()查看队首元素" <<endl; 
	 
	 
}

运行结果:

插入元素123后,目前队列中的元素:1 2 3
q.size()=3
q.empty()=0
q.front()=1

q.pop()后,目前队列中的元素:2 3
q.size()=2
q.empty()=0
q.front()=2

q.pop()后,目前队列中的元素:3
q.size()=1
q.empty()=0
q.front()=3

q.pop()后,目前队列是空的
q.size()=0
q.empty()=1
队列是空的时候将不能用q.front()查看队首元素

queue和stack都是不能随机访问的,即通过下标访问元素,也不能遍历

至此队列的基本用法就学完咯

是不是很简单呢?

刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!!!

文章尚有不足,欢迎大牛们指正

感谢观看,点个赞吧

  • 11
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
引用中的代码展示了使用STL库中的queue容器的示例。queue是一种先进先出(FIFO)的数据结构,它允许在队尾插入元素,在队首删除元素。在这个示例中,首先创建了一个CData的对象test1,并将其加入到了dataQueue中,然后通过front()函数获取dataQueue的队首元素并赋值给data对象,最后通过pop()函数将队首元素从dataQueue中弹出。 引用说明了queue的底层实现类型,默认为std::deque,但也可以是其他类型,只要支持相应的操作,如front、back、push_back和pop_front等。 引用列举了queue常用的成员函数和功能。其中,empty()函数用于判断queue是否为空,size()函数用于返回queue中元素的个数,front()函数返回queue的第一个元素的引用,back()函数返回queue的最后一个元素的引用,push()函数用于在queue的尾部添加一个元素的副本,emplace()函数用于在queue的尾部直接添加一个元素,push(T&& obj)函数以移动的方式在queue的尾部添加元素,pop()函数用于删除queue中的第一个元素,swap()函数用于交换两个queue容器的元素。 综上所述,引用的代码示例展示了使用STL库中的queue容器的基本操作,包括插入、删除和访问元素的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [c++ stl queue的使用](https://blog.csdn.net/tianyexing2008/article/details/126356034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++STL 之queue的简单使用](https://blog.csdn.net/lady_killer9/article/details/79261798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧林墨烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值