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