目录
前言
哈喽大家好,今天我们继续来学习STL的容器。本章主要讲解STL中栈和队列的相关知识,小伙伴们快拿好笔记本,让我们一起开始吧。
一、stack的介绍和实现
1、容器适配器
在介绍stack之前,我们首先要学习一个概念——容器适配器。
概念:适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。
2、stack的介绍
(1) stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。
(2)stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素。
(3)stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:
- empty:判空操作
- back:获取尾部元素操作
- push_back:尾部插入元素操作
- pop_back:尾部删除元素操作
(4)标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器,默认情况下使用deque。
3、stack的模拟实现
template<class T, class Contioner = std::deque<T>>
class stack
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_back();
}
T top()
{
return _con.top;
}
bool empty()
{
return _con.empty();
}
size_t size()
{
return _con.size();
}
private:
Contioner _con;
};
二、queue的介绍和实现
1、queue的介绍
(1) 队列是一种容器适配器,其中从容器一端插入元素,另一端提取元素。
(2)队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。
(3)底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:
- empty:检测队列是否为空
- size:返回队列中有效元素的个数
- front:返回队头元素的引用
- back:返回队尾元素的引用
- push_back:在队列尾部入队列
- pop_front:在队列头部出队列
ÿ