美文网首页
可变长的数组

可变长的数组

作者: Leo_2dab | 来源:发表于2017-07-24 20:56 被阅读0次
    #include"iostream"
    using namespace std;
    class CArray{
        int size;//数组元素的个数
        int *ptr;//指向动态分配的数组
    public:
        CArray(int s = 0);//s代表数组元素的个数
        CArray(CArray &a);
        ~CArray();
        void push_back(int v);//用于在数组尾部添加一个元素v
        CArray &operator=(const CArray &);//用于数组对象间的赋值
        int length(){ return size;}
        int& operator[](int i){
            return ptr[i];
        }
    
    };
    CArray::CArray(int s) : size(s){
        if (s == 0)
            ptr = NULL;
        else
            ptr = new int[s];
    }
    CArray::CArray(CArray &a){
        if (!a.ptr){
            ptr = NULL;
            size = 0;
            return;
        }
        else{
            ptr = new int[a.size];
            memcpy(ptr, a.ptr, sizeof(int)*a.size);
            size = a.size;
        }
    }
    CArray::~CArray(){
        if (ptr)
            delete[]ptr;
    }
    CArray & CArray::operator=(const CArray &a){
        if (ptr == a.ptr)
            return *this;
        if (a.ptr == NULL){
            if (ptr) delete[]ptr;
            ptr = NULL;
            size = 0;
            return *this;
        }
        if (size < a.size){
            if (ptr)
                delete[]ptr;
            ptr = new int[a.size];
        }
        memcpy(ptr,a.ptr,sizeof(int)*a.size);
        size = a.size;
        return *this;
    }
    void CArray::push_back(int v){
        if (ptr){
            int *temptr = new int[size + 1];
            memcpy(temptr, ptr, sizeof(int)*size + 1);
            ptr = temptr;
        }
        else{
            ptr = new int[size + 1];
        }
        ptr[size++] = v;
    }
    int main(){
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:可变长的数组

          本文链接:https://www.haomeiwen.com/subject/vnhikxtx.html