queue
queue是C++STL库中的一个适配器,一般使用deque作为数据存储容器。在数据结构中,它是采用队列的设计思路;在算法领域中,适用于解决宽度优先搜索BFS、图论等问题。下面我们就来认识一下queue适配器。
文章目录
- queue
- 1. queue的介绍和使用
- 1.1 queue的介绍
- 1.2 queue的使用
- 1.2.1 queue的构造
- 1.2.2 成员函数
- 2. queue底层实现
- 2.1 容器适配器(配接器)
- 2.1.1 什么是适配器(配接器)
- 2.2 模拟实现queue
1. queue的介绍和使用
1.1 queue的介绍
queue的文档介绍
queue就是队列,满足先入先出(FIFO)原则
1.2 queue的使用
下面就介绍几种最为常用的接口使用
1.2.1 queue的构造
构造函数(constructor) | 接口说明 |
---|---|
explicit queue (const container_type& ctnr = container_type()); | 将容器中的值拷贝给queue |
1.2.2 成员函数
Member functions | 接口说明 |
---|---|
empty | 判断queue是否为空,是空返回true,非空返回false |
size | 返回queue中元素的个数 |
front | 返回队头元素的引用 |
back | 返回队尾元素的引用 |
push | 进行入队(尾插)操作 |
pop | 进行出队(头删)操作 |
swap | 交换两个queue的内容 |
#include <iostream>
#include <queue>
using namespace std;
int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);cout << q.size() << endl;cout << q.back() << endl;while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl; return 0;
}
2. queue底层实现
2.1 容器适配器(配接器)
根据文档说明 queue 是一种 container adaptor 即适配器
2.1.1 什么是适配器(配接器)
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口
C++STL中有三种适配器:
- container adapter 两个容器 stack 、queue其实是适配器
- iterator adapter
- function adapter 改变仿函数的接口者
2.2 模拟实现queue
// queue.h
#pragma once
#include <iostream>
#include <list>
#include <deque>
using namespace std;namespace Alen
{template<class T, class Container = deque<T>> // 模板指定类型class queue{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_front();}const T& front() const{return _con.front();}const T& back() const{return _con.back();}size_t size() const{_con.size();}bool empty() const{return _con.empty();}private:Container _con;};
}
这就是利用适配器的思想,调用已有的容器接口来完成客户期望的接口
感谢你的支持,喜欢本文记得点赞收藏噢。