Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1720900
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: 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;
    }
}

文件:AtlTemplate.zip
大小:0KB
下载:下载
阅读(2700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~