queue适配器,又被叫做”队列“,与deque双端队列不同,它禁止随机插入元素并且只能从队尾进队首出,和就像坐地铁排队一样,不允许插队行为且遵守先入先出规则——FIFO(first in first out)。
queue适配器的成员函数也比较简单,除了元素增删位置不同其他与stack适配器没有什么区别。push()、emplace()把元素放进队尾,pop()把队首元素删除,size()查看元素总数,empty()检查队列是否为空,swap()交换两个同类型的队列,访问首尾元素分别通过front()、back()。
下面通过代码简单演示队列基本操作:
#include<iostream> #include<queue> using namespace std; /*队尾插入,队首删除,除首尾元素外禁止操作元素*/ void test() { queue<int> q; for(int i=0;i<5;++i) { q.push(i); } /*仅仅只能查看队首元素,遍历需要配合pop()使用*/ cout << "遍历队列:" ; while(!q.empty()) { cout << q.front() << " "; q.pop(); } } int main() { test(); return 0; }
代码编译如下:
队列就是这么一个简单的适配器,生动形象地模仿了排队这个行为,在蓝桥杯、ACM等算法竞赛上主要服务于深搜或广搜检查是否存在目标元素,及时进行循环终止操作。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程