目录
1 -> queue的介绍和使用
1.1 -> queue的介绍
1.2 -> queue的使用
1.3 -> queue的模拟实现

1 -> queue的介绍和使用
1.1 -> queue的介绍

queue的文档介绍
1. 队列是一种容器适配器,专门用于在FIFO(先进先出)上下文中操作,其中从容器一端插入元素,另一端提取元素。
2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。
3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类,该底层容器应至少支持以下操作:
- empty: 检测队列是否为空
- size: 返回队列中有效元素的个数、
- front: 返回队头元素的引用
- back: 返回队尾元素的引用
- push_back: 在队列尾部入队列
- pop_front: 在队列头部出队列
4. 标准容器类deque和list满足了这些要求。默认情况下,如果没有为deque实例化指定容器类,则使用标准容器deque。

1.2 -> queue的使用
| 函数声明 | 接口说明 | 
| queue() | 构造空的队列 | 
| empty() | 检测队列是否为空,是返回true,否则返回false | 
| size() | 返回队列中有效元素个数 | 
| front() | 返回队头元素的引用 | 
| back() | 返回队尾元素的引用 | 
| push() | 在队尾将元素val入队列 | 
| pop() | 将队头元素出队列 | 
相关题目:
用队列实现栈
class MyStack 
{
public:
    queue<int> q1;
    queue<int> q2;
    MyStack() 
    {
    }
    
    void push(int x) 
    {
        q2.push(x);
        while (!q1.empty())
        {
            q2.push(q1.front());
            q1.pop();
        }
        swap(q1, q2);
    }
    
    int pop() 
    {
        int x = q1.front();
        q1.pop();
        return x;
    }
    
    int top() 
    {
        int x = q1.front();
        return x;
    }
    
    bool empty() 
    {
        return q1.empty();
    }
};1.3 -> queue的模拟实现
因为queue的接口中存在头删和尾插,因此使用vector来封装效率太低,故可以借助list来模拟实现queue。
#define  _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <list>
using namespace std;
namespace fyd
{
	template<class T>
	class Queue
	{
	public:
		Queue(){}
		void push(const T& x)
		{
			_c.push_back(x);
		}
		void pop()
		{
			_c.pop_front();
		}
		T& back()
		{
			return _c.back();
		}
		const T& back()const
		{
			return _c.back();
		}
		T& front()
		{
			return _c.front();
		}
		const T& front()const
		{
			return _c.front();
		}
		size_t size()const
		{
			return _c.size();
		}
		bool empty()const
		{
			return _c.empty();
		}
	private:
		list<T> _c;
	};
}感谢各位大佬支持!!!
互三啦!!!



















