#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>

//
整形数组
//
对元素进行管理的类,可以叫容器类
template<typename T, int nSize = 5>
class IntegerArray
{
private:
    T *m_pIntegerArray;
    //
大小
    int  m_nSize;
public:
    IntegerArray();
    ~IntegerArray()
    {
        if ( m_pIntegerArray )
        {
            delete[] m_pIntegerArray;
            m_pIntegerArray = NULL;
        }
        m_nSize = 0;
    }
   
    T &GetAt(int nIndex)
    { 
        if ( nIndex < 0 || nIndex >= m_nSize )
        {
            exit(-1);
        }
        return m_pIntegerArray[nIndex];
    }
   
    void SetAt(int nIndex,T nData)
    {
        if ( nIndex < 0 || nIndex >= m_nSize )
        {
            exit(-1);
        }
        m_pIntegerArray[nIndex] = nData;
    }
   
    void PrintAll()
    {
        for ( int i = 0 ;i  < m_nSize ; i++ )
        {
            cout << GetAt(i) << endl;
        }
    }
    int GetSize() const
    {
        return m_nSize;
    }
};

//
构造函数
template<typename T, int nSize>
IntegerArray<T, nSize>::IntegerArray()
{
    if ( nSize <= 0 )
    {
        exit(-2);
    }
    m_pIntegerArray = new T[m_nSize = nSize];
}

int main(int argc, char* argv[])
{
    IntegerArray<int> theIntArray;
   
    cout << theIntArray.GetSize() << endl;
   
    IntegerArray<char,10> theArray;
   
    for (int i = 'a' ; i < 'z'; i++)
    {
        if (i - 'a' >= 10)
        {
            break;
        }
        theArray.GetAt(i-'a') = i;
    }
    theArray.PrintAll();
    return 0;
}

posted on 2010-02-04 22:28  o无尘o  阅读(155)  评论(0编辑  收藏  举报