代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
template <typename T>
class Vector{
private :
T* data; /// 动态数组 指针指向一个内存空间
int len; /// 当前存在元素个数
int sz; /// 当前动态数组的大小
public :
Vector(){
len=0;
sz=1;
data=new T[1]; /// 分配一个内存空间
} /// 构造 初始化
void clear(){
len=0;
sz=1;
delete[] data;
data=new T[1];
}
int size(){
return len;
}
T& operator [] (const int index){
if(index>=len) {
cout<<"Error!"<<endl;
}
return data[index];
} /// 重写 [] ,返回询问的下标的val
void push_back(const T a){
if(len>=sz){ /// 当前动态数组存不下了,再开两倍的空间
sz=sz*2+1;
T* newdata=new T[sz];
memcpy(newdata,data,sizeof(data));
/// 将之前的数据复制进来
delete[] data;
data=newdata;
}
data[len++]=a;
} /// 插入一个值
protected :
};
struct node{
int v,id;
node(int v=0,int id=0):v(v),id(id){}
};
int main(){
Vector<node> V;
V.push_back(node(1,1));
V.push_back(node(2,2));
V.push_back(node(3,3));
V[0]=node(1,4);
for(int i=0;i<V.size();i++)
cout<<V[i].v<<" "<<V[i].id<<endl;
return 0;
}