1. 程式人生 > >數據結構--數組類實現

數據結構--數組類實現

ces ESS 數組訪問操作符 mar set 封裝 長度 color 存儲

實現的目標
技術分享圖片

一 需求分析

A:創建數組類代替原生數組的使用
1.數組類包含長度信息
2.數組類能夠主動發現越界訪問

二Array(數組類)設計要點

1抽象類模板,存儲空間的位置和大小由子類完成
2.重載數組操作符,判斷訪問下標是否合法
3.提供數組長度的抽象訪問函數
4.提供數組對象間的復制操作
由以上的分析可以得出Array類的聲明

template <typename T>
class Array:public Object
{
    protected:
        T* m_array;
    public:
        virtual bool set(int i,const T&e);
        virtual bool get(int i,T& e)const;
        virtual int length()const=0;
        //數組訪問操作符
        T& operator[](int i);
        T operator[](int i)const;
};

三StaticArray設計要點

A:類模板
1.封裝原生數組
2.使用模板參數決定數組大小
3.實現函數返回數組長度
4.拷貝構造和復制操作

//StaticArray類的聲明
template<typename T,int N>
class StaticArray:public Array<T>
{
    protected:
        T* m_space[N];
    public:
        StaticArray();
        //拷貝和賦值操作
        StaticArray(const StaticArray<T,N>& obj);
        StaticArray<T,N>& operator=(const StaticArray<T,N>& obj);

        int length()const;
};

四.DynamicArray設計要點

A.類模板
1.動態確定內部數組空間的大小
2.實現函數返回數組長度
3.拷貝構造和賦值操作

//DynamicArray類的聲明
template<typename T>
class DynamicArray:public Array<T>
{
    protected:
        int m_length;
    public:
        DynamicArray(int length);
        DynamicArray(const DynamicArray<T>& obj);
        DynamicArray<T>& operator=(const DynamicArray<T>& obj);

        int length()const;
        void resize(int length);//動態重置數組的長度

        ~DynamicArray();
};

數據結構--數組類實現