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