stack的实现原理和使用方法详解

Stack 简介

stack 是堆栈容器,是一种“先进后出”的容器。

stack 是简单地装饰 deque 容器而成为另外一种容器。

使用 stack 时需要加上头文件 #include<stack> 。

stack 实现原理

以某种既有容器作为底部结构,将其接口改变,使之符合“先进后出”的特性,,形成一个 stack,是很容易做到的。deque 是双向开口的数据结构,若以 deque 为底部结构并封闭其头端开口,便轻而易举地形成了一个 stack。因此,STL便以 deque 作为缺省情况下的 stack 底部结构。

由于 stack 系以底部容器完成其所有工作,而具有这种“修改某物接口,形成另一种风貌”之性质者,称为 adapter(配接器),因此stack 往往被归类为容器配接器。

stack 对象的默认构造

stack 采用模板类实现,stack 对象的默认构造形式:stack<T> stkT ;

stack <int> stkInt;//一个存放int的stack容器。stack <float> stkFloat;//一个存放float的stack容器。stack <string> stkString;//一个存放string的stack容器。 尖括号内还可以设置指针类型或自定义类型。

stack 的push()与pop()方法

stack.push(elem); //往栈头添加元素stack.pop(); //从栈头移除第一个元素stack<int> stkInt; stkInt.push(1);stkInt.push(3);stkInt.pop(); stkInt.push(5);stkInt.push(7); stkInt.push(9);stkInt.pop();stkInt.pop(); //此时stkInt存放的元素是1,5 stack 对象的拷贝构造与赋值stack(const stack &stk); //拷贝构造函数stack& operator=(const stack &stk);//重载等号操作符stack<int> stkIntA;stkIntA.push(1);stkIntA.push(3);stkIntA.push(5);stkIntA.push(7);stkIntA.push(9);stack<int> stkIntB(stkIntA);//拷贝构造stack<int> stkIntC;stkIntC = stkIntA;//赋值stack 的数据存取stack.top(); //返回最后一个压入栈元素stack<int> stkIntA;stkIntA.push(1);stkIntA.push(3);stkIntA.push(5);stkIntA.push(7);stkIntA.push(9);int iTop = stkIntA.top();//9stkIntA.top() = 19;//19stack 的大小 stack.empty(); //判断堆栈是否为空stack.size();//返回堆栈的大小stack<int> stkIntA;stkIntA.push(1);stkIntA.push(3);stkIntA.push(5);stkIntA.push(7);stkIntA.push(9);if (!stkIntA.empty()){int iSize = stkIntA.size();//5}

版权声明:本文为博主原创文章,未经博主允许不得转载。

请打开窗口,让我的灵魂与你的灵魂相拥。

stack的实现原理和使用方法详解

相关文章:

你感兴趣的文章:

标签云: