1 实验内容及目的
2 实验步骤
在头文件中声明Stack类,通过关键词template来使用模板,在Test类中进行测试,在Main函数中通过<>中的类型名来决定Stack类储存的数据元素类型。
3 源代码
#include <iostream>
using namespace std;
template<typename T>
class Stack
{
public:
Stack();
boolempty();
Tpeek();
voidpush(T value);
Tpop();
intgetSize();
voidprintStack();
boolcontains(T e);
private:
Telement[100];
intsize;
};
template<typename T>
Stack<T>::Stack()
{
size= 0;
}
template<typename T>
bool Stack<T>::empty(){
if(size == 0)
returntrue;
else
returnfalse;
}
template<typename T>
T Stack<T>::peek(){
returnelement[size - 1];
}
template<typename T>
void Stack<T>::push(T value){
element[size]= value;
size++;
}
template<typename T>
T Stack<T>::pop(){
returnelement[--size];
}
template<typename T>
int Stack<T>::getSize(){
returnsize;
}
template<typename T>
void Stack<T>::printStack(){
for(int i = 0; i < size; i++){
cout<< element[i] << endl;
}
}
template<typename T>
bool Stack<T>::contains(T e){
for(int i = 0; i < size; i++){
if(element[i] == e)
returntrue;
elseif(i == size - 1){
returnfalse;
}
else{
continue;
}
}
}
#include <iostream>
#include "Stack.h"
int main(){
cout<< "int:" << endl;
Stack<int>stackOfInt;
stackOfInt.push(1);
stackOfInt.push(2);
stackOfInt.printStack();
cout<< "double:" << endl;
Stack<double>stackOfDouble;
stackOfDouble.push(30.4);
stackOfDouble.push(11.2);
stackOfDouble.printStack();
cout<< "输入要查找的double型数:"<< endl;
doubleinput;
cin>> input;
if(stackOfDouble.contains(input))
cout<< "存在" << endl;
else
cout<< "不存在" << endl;
return0;
}
4 遇到的问题与分析
这次的实验遇到的问题主要在于如何灵活地使用模板类,因此完成本实验的关键在于熟悉C++中使用模板类的方法,通过阅读书本,学习相关语法,问题就能得到解决。
5 实验体会
本次的实验是C++课程的最后一次实验,通过本次实验,我学会了如何使用模板类来更加高效地编程,从实践中巩固了理论知识并且体会到了C++语言的优点与特色,但与此同时我也认识到自己所学到的知识仍然只是冰山一角,仅仅是学习书本的知识和编写实验要求的代码是不够的,要真正学透C++,我还需要很