程序点滴jcodeer.blog.chinaunix.net
jcodeer
全部博文(171)
2012年(2)
2011年(70)
2010年(9)
2009年(14)
2008年(76)
Bean_lee
GY123456
armlife
linky521
g_progra
猥琐才是
athzhang
CU博客助
meiyang_
heq76
gaokeke1
yangyefe
yanganni
tomcodin
qhy95020
allaxin
suntao32
13661379
分类: C/C++
2008-06-14 14:12:00
#include "stdafx.h" #include <iostream> using namespace std; //使用模板创建一个返回最大值的函数 template <class Type> Type MaxValue(Type a,Type b) { if ( a > b) { return a; } else return b; } //创建一个堆栈模板类 template <class T> class Stack { public: Stack(){ m_nPos = 0;} ~Stack(){} void Push(T value); T Pop(); bool IsEmpty() { return m_nPos == 0; } bool HasElement() { return !IsEmpty(); } bool IsFull() { return m_nPos == STATCK_SIZE; } private: int m_nPos; //使用常量表示堆栈的大小 const static int STATCK_SIZE = 100; T m_Data[STATCK_SIZE]; }; //模板类的成员函数实现 template <class T> void Stack<T> ::Push(T value) { //使用后置递增操作符 m_Data[m_nPos++] = value; } template <class T> T Stack<T>::Pop() { //使用前置递减操作符 return m_Data[--m_nPos]; } void TestMaxValue() { //隐式调用 cout << MaxValue(10,20) << endl; cout << MaxValue(2.5002,30.003) << endl; //显示调用 cout << MaxValue<int>(10,20) << endl; cout << MaxValue<double>(2.5002,30.003) << endl; } void TestStack() { //测试模板类(整数) Stack <int> intStack; intStack.Push(10); intStack.Push(20); intStack.Push(30); while (intStack.HasElement()) { cout << intStack.Pop() << endl; } //测试模板类(浮点) Stack <float> floatStack; floatStack.Push(1.001); floatStack.Push(2.002); floatStack.Push(3.003); while (floatStack.HasElement()) { cout << floatStack.Pop() << endl; } //测试动态创建对象 //Stack创建的指针必须指明类型 Stack<int>* pInt = new Stack<int>(); pInt->Push(10); pInt->Push(20); pInt->Push(30); while (pInt->HasElement()) { cout << pInt->Pop() << endl; } if ( pInt != NULL) { delete pInt; pInt = NULL; } }
上一篇:优秀代码网址
下一篇:嵌入式开发网站链接推荐
登录 注册