c++vector簡單實現

來源:互聯網
上載者:User

標籤:

const  int DEFAULT_CAP = 3;template <typename T>class vector {    //    int capacity;    T* _data;    int _size;    public:    //const    vector ():capacity(DEFAULT_CAP),_size(0),_data(new T[capacity]){};        vector(vector& v):capacity(v.cap()),_size(v.size()),_data(new T[capacity]) {        memcpy(_data, v._data, _size*sizeof(T));    }    vector(vector&& v):capacity(v.cap()),_size(v.size()) {        _size = v.getdata();        v._data = nullptr;    }    //deconst    virtual ~vector(){ delete [] _data;}    //operator    vector& operator=(const vector &v) {        /*        if(this != &v){            delete [] _data;            _size = v.size();            capacity = v.cap();            _data = new T[capacity];            memcpy(_data, v._data, _size*sizeof(T));        }*/        sw(v);        return *this;    }    T& operator[](int i) const{        return _data[i];    }    //retrun    int size() const {return _size;}    int cap() const {return capacity;}    const int getdata() const noexcept {_data;}    //function    void expand() {        if(_size == capacity){            capacity = capacity<<1;        T *old = _data;        _data = new T[capacity];        memcpy(_data, old, _size*sizeof(T));        delete [] old;        }    }    void push_back(T const& temp) {        expand();        _data[_size++] = temp;    }    void each(){        for (int i = 0; i < _size; ++i) {            cout<<_data[i]<<endl;        }    }    void sw(vector& v) {        swap(_size, v._size);        swap(capacity, v.capcity);        swap(_data, v._data);    }};

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

c++vector簡單實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.