queue容器:是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。
队列中只有队头和队尾才可以被外界使用,队列不允许有遍历行为。
入队:队列中进数据-----push
出队:队列中出数据-----pop
构造函数:
queue<T> que; //默认构造 采用模板类实现,
queue(const queue &data); //拷贝构造
赋值操作:
queue& operator=(const queue &data); //重载等号操作符
数据存取:
push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素
feont(); //返回第一个元素
大小操作:
empty(); //判断队列是否为空
size(); //返回队列的大小
#include <iostream>
#include <string>
#include <queue>
using namespace std;
class MyType
{
public:
MyType(string str, int num){
this->my_str = str;
this->my_num = num;
}
string my_str;
int my_num;
};
void fun_queue()
{
queue<MyType> data; //创建队列
MyType m1("aa",1); //准备元素
MyType m2("bb",2);
MyType m3("cc",3);
data.push(m1); //入队
data.push(m2);
data.push(m3);
while (!data.empty()){
std::cout << "队头元素大小:" << data.size() << std::endl;
std::cout << "队头元素:" << data.front().my_str << " " << data.front().my_num << std::endl;
std::cout << "队尾元素:" << data.back().my_str << " " << data.back().my_num << std::endl;
data.pop(); //出队 队头元素出队
}
std::cout << "结束后 队头元素大小:" << data.size() << std::endl;
// 打印结果
// 队头元素大小:3
// 队头元素:aa 1
// 队尾元素:cc 3
// 队头元素大小:2
// 队头元素:bb 2
// 队尾元素:cc 3
// 队头元素大小:1
// 队头元素:cc 3
// 队尾元素:cc 3
// 结束后 队头元素大小:0
data.push(m1); //入队
data.push(m2);
data.push(m3);
while (!data.empty()){
std::cout << "队头元素:" << data.front().my_str << " " << data.front().my_num << std::endl;
data.pop(); //出队 队头元素出队
}
data.push(m1); //入队
data.push(m2);
data.push(m3);
data.back().my_num -= data.front().my_num;
while (!data.empty()){
std::cout << "队头元素:" << data.front().my_str << " " << data.front().my_num << std::endl;
data.pop(); //出队 队头元素出队
}
// 打印结果
// 队头元素:aa 1
// 队头元素:bb 2
// 队头元素:cc 3
// 队头元素:aa 1
// 队头元素:bb 2
// 队头元素:cc 2
}