概念
队列是一种先进先出的数据结构。队列也是我们日常项目中使用最多存储方式。STL的队列是快速构建搜索算法以及相关的数论图论的状态存储的基础。
头文件
头文件:#include<queue>
初始化
格式:
explicit queue (const container_type& ctnr = container_type());
我们以char型和int型参数举例创建
queue<int> q; //创建一个空的没有数据的队列q
queue<char> q;
注:标准的队列创建方法是直接创建空队列再进行其他的操作
4. 迭代器
栈和队列都属于一种特殊的数据结构,只能通过访问顶层数据并不断剔除数据的方法进行全部访问,因此没有直接的迭代器
5. 常用接口
获取队列的大小-size()
函数原型:size_type size() const;
返回值为队列元素个数
cout<<q.size()<<endl; //直接返回队列q的元素个数
队列的插入-push()
进行入队操作,在队尾处进行插入
函数原型:void push (const value_type& val);
q.push(10); //往队列q队尾插入元素10
3.出队-pop()
进行出队操作,在对头出进行弹出
函数原型:void push (const value_type& val);
q.pop(); //取出队列头部元素
4.访问队首元素-front()
访问对头元素,可以返回其数值,也可以进行相应的操作,这里更加建议多使用front()访问队头数据,因为我们进行出队操作均是从队头进行出队的
函数原型:
value_type& front();
const value_type& front() const
cout<<q.front()<<endl; //输出队列q队首内容
5.访问队尾元素-back()
访问队尾元素(日常使用很少)
函数原型:
value_type& back();
const value_type& back() const;
cout<<q.back()<<endl; //输出队尾内容
6.判断是否为空-empty
返回一个bool类型的值,只存在真和假,当队列为空时为真,不为空时为假
函数原型:
bool empty() const;
if(q.empty())
{
cout<<"is empty()"<<endl;
}
else
{
cout<<"not empty()"<<endl;
}
6.示例代码
include<iostream>、
#include<queue>
using namespace std;
int main()
{
//创建一个空的没有数据的队列q
queue<int> q;
//直接返回队列q的元素个数
cout<<"队列大小为:"<<q.size()<<endl;
//往队列q队尾插入元素10,20
q.push(10);
q.push(20);
cout<<"插入元素后队列大小为:"<<q.size()<<endl;
cout<<"此时队首元素为:"<<q.front()<<endl;
//访问此时队列q队尾元素
cout<<"此时队尾元素为:"<<q.back()<<endl;
//取出队首元素
q.pop();
//访问取出后的队首元素
cout<<q.front()<<endl;
//判断此时队列是否为空
if(q.empty())
{
cout<<"is empty()"<<endl;
}
else
{
cout<<"not empty()"<<endl;
}
return 0;
}
运行截图如下: