(一)了解queue
queue就是一个FIFO的队列
其底层容器默认是deque
没有迭代器!
只能访问头和尾,不能随机访问。
queue是适配器,不叫容器,因为是对容器的再封装。
(二)Test_Demo
#include <iostream>
#include <queue>//FIFO
#include <algorithm>
using namespace std;
int main()
{
size_t i;
/**********************************Demo1 initial**************************************/
queue<int> q1; //默认底层容器类型为deque<T>
//queue<int> q2 = {1, 2}; 不能在定义时初始化
queue<int> q2(q1); //可以使用拷贝构造函数来初始化,但是要保证二者存储的数据类型相同&&底层容器类型的相同
/**********************************Demo2 options**************************************/
if (q1.empty())//判断该队列是否为空
cout << "the queue is empty!" << endl;
for (i = 0; i < 5; ++i){
q1.push(i);//push数据到队列尾部
}
cout << "the queue size is:" << q1.size() << endl;
cout << "the queue front is:" << q1.front() << endl;
cout << "the queue back is:" << q1.back() << endl;
//遍历:queue没有迭代器,只能访问头元素和尾元素
int x;
int size = q1.size();
cout << "遍历:" << endl;
for (i = 0; i < size; ++i) {
x = q1.front();
cout << "data:" << x << " ";
q1.pop(); //注意:pop后size也会变化
}
cout << endl;
//清空&&删除queue:删除就是pop,没有clear,不过可以利用拷贝构造函数将一个空的queue交换
queue<int> empty;
swap(q1, empty);//or q1 = queue<int>(); 虽然遍历pop也可以,但是。。。是吧!
if (q1.empty())
cout << "the queue have been clear!" << endl;
return 0;
}
本文深入解析C++标准库中的queue数据结构,重点介绍其作为FIFO队列的工作原理,以及如何在实际编程中进行初始化、操作与遍历。通过示例代码展示queue的使用方法,包括数据的push和pop、队列的大小和清空等关键操作。
518

被折叠的 条评论
为什么被折叠?



