C++簡易版vector(動態機制實現)

#include<iostream>
#include<vector>
using namespace std;
template<typename _Ty>
class Vector {
public:
    Vector(const int& size = 0)
        :   length(size)
        ,   capacity(size)
    {
        data = new int[capacity];       //根據size分配空間
    }
 
    void push_back(const int& value) {
        if (length == capacity)     //當尺寸等於容量時,說明容器已滿
            remalloc(capacity+(capacity >> 1));    //此時重新分配1.5倍於原容量大小的空間
        data[length++] = value;
    }
    void remalloc(const int& size) {
        _Ty* new_data = new _Ty[size]();        //創建新空間
        for (int i = 0; i < length && i < size; i++)   
            new_data[i] = data[i];              //將舊空間的值轉存到新空間中
        delete data;        //析構舊空間
        data = new_data;    //將指針指向新空間
        capacity = size;    //修改容量
    }
    _Ty& operator[](const int& index) {
        return data[index];  //[]的實現
    }

    _Ty* data;              //數據指針
    int capacity;           //實際容量(即分配的空間)
    int length;             //數組的尺寸
};
int main() {
    Vector<int> vc(5);
    cout << "容量" << vc.capacity << endl;
    vc.push_back(1);
    for (int i = 0; i < vc.length; i++) 
        cout << vc[i] << " ";
    cout << endl;
    cout <<"容量"<< vc.capacity << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章