12.6 queue容器
12.6.1 queue基本概念
概念:queue(队列)是一种先进先出(First In First Out FIFO)的数据结构,它有两个出口。
队列容器允许从一端新增元素,从另一端移除元素
队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为。
队列中进数据称为 ----- 入队 push
队列中出数据称为 ----- 出队 pop
生活中的打饭、领票排队现象:
12.6.2 queue常用接口
功能描述:栈容器常用的对外接口
构造函数:
- queue que; //queue采用模板类实现,queue对象的默认构造形式
- queue(const queue &que); //拷贝构造函数
赋值操作:
- queue& operator=(const queue &que); //重载等号操作符
数据存取:
- push(elem ); //往队尾添加元素
- pop(); //从队头移除第一个元素
- back(); //返回最后一个元素
- front(); //返回第一个元素
大小操作:
- empty(); //判断队列是否为空
- size(); //返回队列的大小
示例代码:
#include<iostream>
using namespace std;
#include<queue>
#include<string>
//队列 queue
class Person
{
public:
string name;
int age;
Person(string name, int age)
{
this->name = name;
this->age = age;
}
};
void test21()
{
//创建容器
queue<Person>q;
//准备数据
Person p1("唐憎", 23);
Person p2("孙悟空", 99);
Person p3("猪八戒", 108);
Person p4("沙增", 33);
//把数据添加进容器里面:入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
cout << "队列大小为:" << q.size() << endl;
//判断只要队列不为空,查看队头,查看队尾,出队
while (!q.empty())
{
//查看队头
cout << "队头元素 --- 姓名:" << q.front().name << " 年龄:" << q.front().age << endl;
//查看队尾
cout << "队尾元素 --- 姓名:" << q.back().name << " 年龄:" << q.back().age << endl;
//出队操作
q.pop();
}
cout << "队列大小为:" << q.size() << endl;
}
int main()
{
test21();
system("pause");
return 0;
}
运行结果:
总结
- 入队 — push
- 出队 — pop
- 返回队头元素 — front
- 返回队尾元素 — back
- 判断是否为空 — empty
- 返回队列大小 — size
如果对你有帮助的话,请不要忘了给我一点点点…支持 ( ^ o ^)/~