一. queue的特性
队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端进行插入操作。
进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
队列容器,先进先出;
不能进行遍历,不提供迭代器,不支持随机访问。
二. queue常用操作
1.queue 构造函数
queue<T> que; //采用模板实现,queue对象的默认构造形式;
queue(const queue &que) //拷贝构造函数;
2.queue存取、插入和删除操作
push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素
front(); //返回第一个元素
3.queue赋值操作
queue& operator=(const queue &que); //重载等号操作符
4.queue大小操作
empty(); //判断队列是否为空;
size(); //返回队列的大小
三. 程序测试
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<queue>
#include <stack>
using namespace std;
void test01() {
queue<int> q; //创建队列
q.push(10);
q.push(20);
q.push(30);
q.push(40);
cout << "队尾:" << q.back() << endl;
//输出顺序? 10 20 30 40
while (q.size() > 0) {
cout << q.front() << " "; //输出队头元素
q.pop(); //删除队头
}
cout << endl;
//作业1 queue容器存放对象指针
}
//queue容器存放stack容器
void test02() {
stack<int> stk1, stk2;
queue<stack<int>> q;
stk1.push(10);
stk1.push(29);
stk1.push(203);
stk2.push(120);
stk2.push(229);
stk2.push(2203);
q.push(stk1);
q.push(stk2);
cout << "queue容器存放stack容器 test..q.size = " <<q.size() << endl;
cout<< q.front().top() << endl;
}
int main(void){
test01();
test02();
return 0;
}
程序执行结果: