本篇文章给大家分享的是有关使用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> MyStackMyStack 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++怎么实现一个堆栈类模板