类模板的使用

注意在每次类模板函数时都需要声明一个类模板

#include<iostream>
using namespace std; template <class T,int num>
class Stack{
private:
T t[num];
int point;
public:
Stack();
bool IsEmpty();
bool IsFull();
bool Push(const T& a);
bool Pop(T& result);
};
template <class T,int num>
Stack<T,num>::Stack(){
point = 0; //指向栈底
}
template <class T,int num>
bool Stack<T,num>::IsEmpty(){
return point == 0;
}
template <class T,int num>
bool Stack<T,num>::IsFull(){
return point == num;
}
template <class T,int num>
bool Stack<T,num>::Pop(T& result){ //出栈先判断栈是否为空 Pop还需要一个元素来存储弹出的结果
if(IsEmpty()){
return 0;
}
else{
point--;
result = t[point];
}
return true;
}
template <class T,int num>
bool Stack<T,num>::Push(const T& a){ //入栈先判断栈是否已满
if(IsFull()){
return 0;
}
else{ t[point] = a; //注意先后顺序,point指的实际上是栈中最顶部元素上面的位置
point++;
}
return true;
}
int main(){
Stack<int,10> S; //注意初始化的方式Stack<int,10>
cout<<S.IsEmpty()<<endl;
for(int i = 0;i < 10;i++){
S.Push(i);
}
int res; //该变量用来存储弹出的结点
while(S.Pop(res)){
cout<<res<<" ";
}
cout<<endl;
}

最新文章

  1. nginx:文件下载指定保存文件名的配置
  2. 你的程序支持复杂的时间调度嘛?如约而来的 java 版本
  3. 初次尝试用Kotlin实现Android项目
  4. socket通信之eofexception
  5. ubuntu16.04 + ubuntu + apache2 配置apache解析php
  6. 修改安卓串口蓝牙app问题记录
  7. Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
  8. BZOJ3012 : [Usaco2012 Dec]First!
  9. swift NSUserDefaults的基本使用
  10. 华东师大OJ:IP Address【IP地址转换】
  11. qq互联(connect.qq.com)取用户信息的方法
  12. HTML5桌面通知:notification api
  13. Nginx代码调试——gdb工具
  14. leetcode344——Reverse String(C++)
  15. 控件构造函数需要的AOwner是TComponent,而不是Parent
  16. phpcms v9 二次开发 - 自己添加源文件
  17. MXNet--DMLC-Core代码解读与宏
  18. Ubuntu Desktop 16.04 LTS 下成功配置Jupyter的两个python内核版本(2.7x,3.5x)
  19. lvs与haproxy
  20. 神经网络1_neuron network原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)

热门文章

  1. python笔记14
  2. linux下后台执行shell脚本nohup
  3. SpringData学习笔记一
  4. day1-4js算术运算符及类型转化
  5. IDEA下的SVN设置以及TortoiseSVN安装后bin目录下没有svn.exe如何解决?
  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:引用(Blockquote)
  7. va_list、va_start、va_arg、va_end
  8. InnoDB中一棵B+树能存多少行数据
  9. 发送邮件功能 Service 层
  10. 6(计算机网络) 交换机与VLAN