stack是一种先进后出的数据结构,它只有一个出口,如下图所示,stack容器允许新增元素,移动元素,取得栈顶元素,但是除了最顶端外,没有任何方法可以存取stack的其他元素。换言之,stack不允许有遍历行为
将元素推入栈的操作叫做压栈(push),将元素推出栈的操作叫做弹栈(pop)
以某种容器作为底部结构,将其接口改变,使之符合先进后出的特性,形成一个stack是很容易做到的。 deque是双向开口数据结构,若以deque为底部结构并封闭其头端开口,便轻而易举地形成了一个stack。因此STL使用deque作为缺省情况下的stack底部结构。
由于stack的功能由底部容器提供,而具有这种“修改某物接口形成另一种风貌”之特性者,称之为配接器
stack所有元素的进出都必须符合先进后出的条件,只有栈顶的元素,才有机会被外界取用,stack不提供遍历功能,也不提供迭代器
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190910171318976.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxODI1MA==,size_16,color_FFFFFF,t_70)
stack所有元素都必须符合先进后出的前提,只有stack顶端的元素,才有机会被外界取用,stack不提供遍历功能,也不提供迭代器
构造函数
函数名称 | 函数功能 |
---|
stack stkT | stack采用模板类实现, stack对象的默认构造形式 |
stack(const stack &stk); | 拷贝构造函数 |
赋值操作
函数名称 | 函数功能 |
---|
stack& operator=(const stack &stk) | 重载等号操作符 |
数据存取操作
函数名称 | 函数功能 |
---|
push(elem) | 向栈顶添加元素 |
pop() | 从栈顶移除第一个元素 |
top() | 返回栈顶元素 |
大小操作
函数名称 | 函数功能 |
---|
empty() | 判断堆栈是否为空 |
size() | 返回堆栈的大小 |
QUEUE
Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190910171830320.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxODI1MA==,size_16,color_FFFFFF,t_70)
Queue所有元素的进出都必须符合”先进先出”的条件,只有queue的顶端元素,才有机会被外界取用。Queue不提供遍历功能,也不提供迭代器。
构造函数
函数名称 | 函数功能 |
---|
queue queT | queue采用模板类实现 |
queue(const queue &que) | 拷贝构造函数 |
存取、插入和删除操作
函数名称 | 函数功能 |
---|
push(elem) | 往队尾添加元素 |
pop() | 从队头移除第一个元素 |
back() | 返回最后一个元素 |
front() | 返回第一个元素 |
赋值操作
函数名称 | 函数功能 |
---|
queue& operator=(const queue &que) | 重载等号操作符 |
大小操作
函数名称 | 函数功能 |
---|
empty() | 判断队列是否为空 |
size() | 返回队列的大小 |