【C++航海王:追寻罗杰的编程之路】queue

目录

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;
	};
}

感谢各位大佬支持!!!

互三啦!!!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 18:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 18:22:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 18:22:03       82 阅读
  4. Python语言-面向对象

    2024-03-26 18:22:03       91 阅读

热门阅读

  1. 如何快速上手vue框架

    2024-03-26 18:22:03       38 阅读
  2. 1、Spring CLI 简介

    2024-03-26 18:22:03       40 阅读
  3. 设置NPM镜像命令

    2024-03-26 18:22:03       33 阅读
  4. ubuntu 22.04 LTS 内核从 5.15.0 升级到 6.6.0

    2024-03-26 18:22:03       41 阅读
  5. PHP学习笔记

    2024-03-26 18:22:03       32 阅读