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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值