动态数组类模板C++

template <class T>
class Arrary{
private:
    T *list;
    int size;
public:
    Arrary(int sz = 50);
    Arrary(const Arrary<T> &a);
    Arrary<T> & operator = (const Arrary<T> &rhs);
    T &operator [](int i); 
    const T &operator [](const int i)const;
    operator T*();
    operator const T*()const;
    int getSize()const;
    void resize(int sz);
    ~Arrary();
};
template <class T>
Arrary<T>::Arrary(int sz)
{
    assert(sz >= 0);
    size = sz;
    list = new T[size];
}
template <class T>
Arrary<T>::~Arrary()
{
    delete []list;
}
template <class T>
Arrary<T>::Arrary(const Arrary<T> &a)
{
    size = a.size;
    list = new T[size];
    for (int i = 0;i<size ;i++){
        list[i] = a.list[i];
    }
}
template <class T>
Arrary<T>& Arrary<T>::operator = (const Arrary<T> &rhs){
    if( &rhs != this ){
        if(size != rhs.size){
            delete []list;
            size = rhs.size;
            list = new T[size];
        }
        for(int i = 0;i<size ;i++)
            list[i] = rhs.list[i];
    }
    return *this;
}
template <class T>
T & Arrary<T>::operator [](int n)
{
    assert(n>=0&&n<size);
    return list[n];
}
template <class T>
const T & Arrary<T>::operator [](const int n)const
{
    assert(n >= 0&&n <size);
    return list[n];
}
template <class T>
Arrary<T>::operator T*()
{
    return list;
}
template <class T>
int Arrary<T>::getSize()const
{
    return size;
}
template <class T>
void Arrary<T>::resize(int sz)
{
    assert(sz>0);
    if(sz == size)
    return;
    T *newlist = new T[sz];
    int n = (sz < size)?sz : size ;
    for(int i = 0;i<n;i++){
        newlist[n] = list[n];
    }
    delete []list;
    list = newlist;
    size = sz;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值