使用c++怎么实现一个堆栈类模板

  介绍

本篇文章给大家分享的是有关使用c++怎么实现一个堆栈类模板,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

# ifndef  MYSTACK_H   # define  MYSTACK_H   # include  & lt; iostream>   using  namespace 性传播疾病;   ,   template  & lt; typename  T>   class  MyStack   {   公众:   ,MyStack (int 大小);   ,~ MyStack ();   ,bool  stackEmpty();//判空   ,bool  stackFull();//判满   ,void  clearStack();//清空   ,int  stackLength();//长度   ,bool 推动(T  elem);//压栈   ,bool 流行(T 和elem);//出栈   ,bool  stackTop (T 和elem);//返回栈顶   ,void  stackTranverse();//遍历栈   ,   私人:   ,T  * m_pStack;//栈指针   ,int  m_iSize;//栈容量   ,int  m_iTop;//栈顶   };   ,   template  & lt; typename  T>   MyStack   MyStack   bool  MyStack   bool  MyStack   int  MyStack   void  MyStack   bool  MyStack   bool  MyStack   bool  MyStack   void  MyStack

其中需要注意的是类模板需要在每个函数之前写上模板定义模板& lt; typename T>,并且将类名写成MyStack

接着我用一个坐标点类坐标来做测试:

在协调类中利用函数重载运算符& lt; & lt;实现坐标点的打印

# include  & lt; ostream>   using  namespace 性传播疾病;   ,   class 协调   {   公众:   ,friend  ostream& operator<& lt; (ostream ,,, Coordinate ,作);   ,协调(int  int  x=0, y=0)   ,{=,m_iX  x;   y=, m_iY ;   ,}   ,   ,~坐标()   ,{   ,}   私人:   ,int  m_iX;   ,int  m_iY;   };   ostream&, operator<& lt; (ostream ,,, Coordinate ,作),{   ,out  & lt; & lt;,“(“, & lt; & lt;, coor.m_iX  & lt; & lt;,,,,, & lt; & lt;, coor.m_iX  & lt; & lt;,“)“, & lt; & lt;, endl;   ,return ;   }

下面是测试主函数:

# include  & lt; iostream>   # include “MyStack.h"   # include “Coordinate.h"   using  namespace 性传播疾病;   ,   int  main (), {   ,MyStack * pStack =, new  MyStack (5);   ,   pStack→才能推动(坐标(3,5));//坐标点入栈   ,pStack→推(坐标(7,5));   ,pStack→推(坐标(6,5));   ,pStack→推(坐标(4,5));   ,pStack→推(坐标(3,5));   ,   ,pStack→stackTranverse();//遍历栈   ,Coordinate  t;   ,pStack→流行(t);//出栈   ,cout  & lt; & lt;“弹出的t为:“& lt; & lt;, t ;   ,cout  & lt; & lt;,“长度:“,& lt; & lt;, pStack→stackLength ();   ,pStack→clearStack();//清空栈   ,pStack→stackTranverse ();   ,//才能delete  pStack;   ,//pStack =,空;   ,   ,系统(“pause");   ,return  0;   }

使用c++怎么实现一个堆栈类模板